我花了很多时间在这上面。 我有一个应用程序从许多文档和pdf中提取文本,并将提取的信息放在一个简单的Access数据库中。我控制它是一个Swing界面。它有很大的内存泄漏。
终于使用了IBM HeapSpaceAnalyzer我发现大部分堆都被来自库的实例占用了我使用调用pdfbox
我在代码中取消了所有哈希和数组,而对pdfbox
没有影响我见过其他有类似堆空间问题的人,并且有人建议PDFFont.clearResources()是有用的 - 但它对我没有好处 - 我通常在处理一个文档时把它放进去但无论如何,堆都会维护这些引用。
如果我单独离开应用程序而没有处理一段时间,我会得到一种稍微不同的内存泄漏:
无论哪种方式,pdfBox似乎都在泄漏,我不认为增加堆空间使用会起作用。有谁知道如何清除pdfBox的引用?它似乎泄漏了。