简体   繁体   English

带有附加到设计元素的jar的Domino Java代理导致OutOfMemory错误

[英]Domino Java Agent with jars attached to Design Element causes OutOfMemory errors

An application I have uses Java Agents with need large jar Libraries (the biggest one is PDFBox - all in all 11MB). 我有一个使用Java Agents且需要大型jar库的应用程序(最大的一个是PDFBox-总共11MB)。 They were running for 3 years without any issue with the jars in jvm/lib/ext. 他们运行了3年,jvm / lib / ext中的jars没有任何问题。

During an upgrade to Domino 9.0.1FP6 the administrator forgot to reinstall the jars in jvm/lib/ext - with obvious repercussions. 在升级到Domino 9.0.1FP6的过程中,管理员忘记了将jars重新安装在jvm / lib / ext中-具有明显的影响。 (Such an annoyance that IBM just completely replaces the whole jvm sometimes without being gentle to the jars) (令人烦恼的是,有时IBM只是完全替换了整个jvm,而对罐子不屑一顾)

Upon request, I changed the code by including the jars directly into the Java Agents. 根据要求,我通过将jar直接包含在Java代理中来更改了代码。 Things worked well for 2-3 days, and now we're getting OutOfMemory errors. 2-3天内一切正常,现在我们收到OutOfMemory错误。

As far as I understand it, the jars get loaded onto the Java Heap when the agents get started, but the garbage collection is working slower than the continuous loading of the jars into the heap. 据我了解,代理启动时将jar加载到Java Heap上,但是垃圾回收的工作速度比将jar连续加载到堆中的速度慢。 I couldn't find any precise documentation by IBM on this matter. 我找不到关于此事的IBM的任何精确文档。

We've increased JavaMaxHeapSize in the notes.ini of the servers but that didn't bring the expected results. 我们在服务器的notes.ini中增加了JavaMaxHeapSize,但是没有带来预期的结果。

I'm dismissing the possibility that I have forgotten a recycle() in my code because it run beforehand with no memory leaks for three years. 我消除了我在代码中忘记recycle()的可能性,因为该代码可以在三年内没有内存泄漏的情况下预先运行。

I have thought of the possibility of running a separate Agent that checks total memory usage and then runs Sytem.gc() but I'm not convinced since I have no guarantee that the garbage collector will actually fire. 我曾考虑过可能运行单独的代理程序,该代理程序检查总内存使用量,然后运行Sytem.gc(),但我不确信,因为我无法保证垃圾收集器会真正启动。

Apart from the obvious move of putting back the jars in jvm/lib/ext, is there an alternative that I haven't considered? 除了将罐子放回jvm / lib / ext的明显举措之外,还有我没有考虑过的替代方案吗?

And is there anywhere some sort of documentation about how these classes get loaded into the Heap, and whether there's a possibility that the jars erroneously are not recognized as being garbage-collectible? 关于这些类如何加载到堆中的文件,以及是否有可能错误地将罐子识别为垃圾回收对象?

It's a memory leak bug - see http://www-01.ibm.com/support/docview.wss?uid=swg1LO49880 for details. 这是内存泄漏错误-有关详细信息,请参见http://www-01.ibm.com/support/docview.wss?uid=swg1LO49880

You need to go back to placing the jar files in jvm/lib/ext. 您需要返回将jar文件放置在jvm / lib / ext中。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM