我将第三方库集成到我的Java项目中。这个库依赖于HSQLDB.jar。这个库--以及它附带的HSQLDB.jar版本--有点老了,上一次更新是在2010年。它也很大。在我的代码中,我循环数据点并调用库来执行一些计算。我注意到,随着数据点的数量,处理所需的时间几乎成指数增长。例如,对于100分,与不使用库的版本相比,差别很小;对于2000点,差大约是一个小时;对于5000点,完成需要几天的时间,而没有它则需要几个小时!
我尝试将HSQLDB.jar更新到最新版本,但这是一堆异常,所以我又回到了旧版本。
我运行了hprof,它报告说,很大一部分时间是在org.hsqldb.persist.Cache.cleanUp上度过的。我现在试图做的是缩小我对问题是什么和/或它发生在哪里的搜索范围。由于只有在处理了大量输入数据时才会注意到这一点,所以在开始执行调试运行之前,我想做一些初步的“分类”。
不幸的是,现在我不能在这里显示任何代码摘要,因为我不知道什么摘录是相关的.
因此,我的问题是:它在org.hsqldb.persist.Cache.cleanUp上花费太多时间这一事实是否表明了问题的根源?
发布于 2016-02-23 21:30:34
在org.hsqldb.persist.Cache.cleanUp中花费的时间表明它有一个小的内存缓存设置,这会导致频繁的清除和从缓存中读取。
您可以关闭应用程序,并使用较大的缓存设置手动编辑数据库的.script文件。
详情见HSQLDB指南:
http://hsqldb.org/doc/2.0/guide/deployment-chapt.html
您可以在.properties文件中找到数据库的确切版本,并从SourceForge下载该版本的zip包,并参考其指南获得最大允许值。
https://stackoverflow.com/questions/35586999
复制相似问题