我使用的Java应用程序需要大型jar库(最大的一个是PDFBox - 总共11MB)。他们在jvm / lib / ext中运行了3年而没有任何问题。
在升级到Domino 9.0.1FP6期间,管理员忘记在jvm / lib / ext中重新安装jar - 会产生明显的影响。 (这种烦恼让IBM完全取代整个jvm,有时候不会对罐子轻柔)
根据请求,我通过将jar直接包含在Java代理中来更改代码。事情运作良好2-3天,现在我们得到OutOfMemory错误。
据我了解,当代理启动时,jar会被加载到Java堆上,但垃圾收集的工作速度比将jar连续加载到堆中要慢。我无法在此问题上找到IBM的任何准确文档。
我们在服务器的notes.ini中增加了JavaMaxHeapSize,但没有带来预期的结果。
我忽略了我在代码中忘记了recycle()的可能性,因为它预先运行了三年没有内存泄漏。
我已经想到了运行一个单独的代理来检查总内存使用量然后运行Sytem.gc()的可能性,但我不相信,因为我不能保证垃圾收集器实际上会触发。
除了在jvm / lib / ext中放回罐子的明显举动之外,还有一个我没有考虑过的替代方案吗?
是否有任何关于如何将这些类加载到堆中的文档,以及是否有可能错误地将罐子识别为垃圾收集?
这是一个内存泄漏错误 - 有关详细信息,请参阅http://www-01.ibm.com/support/docview.wss?uid=swg1LO49880。
您需要返回将jar文件放在jvm / lib / ext中。