我经常在 IBM Websphere Application Server 上发现 OutOfMemoryException。
我认为发生此异常是因为我的应用程序从数据库中检索了大量数据。所以,我限制所有查询不检索超过 1000 条记录的数据并设置 WAS 的 JVM 跟随
+ Verbose garbage collection
+ Maximum Heap size = 1024 (RAM on my server is 16 GB and now I already change to 8192)
+ Debug arguments = -Djava.compiler=NONE -Xdebug -Xnoagent
-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7777
+ Generic JVM arguments = -Dsun.rmi.dgc.server.gcInterval=60000
-Dsun.rmi.dgc.client.gcInterval=60000 -Xdisableexplicitgc
-Dws.log=E:\WebApp\log -Dws.log.level=debug
(ws.log and ws.log.level are my properties)
我在配置文件文件夹中发现了 heapdump 、 javacore 和 snap 文件我认为他们可以告诉我问题的原因,但我不知道如何读取/使用 heapdump、javacore 和 snap 文件。
请告诉我如何防止/避免/修复 OutOfMemoryException。
谢谢
最佳答案
对此的答案取决于与 OutOfMemoryException 关联的消息。您也可以尝试 -XX:MaxPermSize=... 并将其设置为更大的值,例如 256m。
此外,如果您在某处有递归函数,则可能会导致堆栈溢出。
如果可以,请发布与异常相关的消息。 Stacktrace 也可能有所帮助。
关于java - IBM Websphere OutOfMemoryException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/182876/