问题:我遇到间歇性内存不足问题,但 WebSphere 正在恢复。我正在尝试确定如何找出占用大部分内存的内容。我有应用程序动态,但它不适用于 Websphere。
唯一的方法是确定什么消耗了大部分内存以从内存不足崩溃中进行堆转储吗?
服务器:WebSphere 7.5
JAVA版本:IBM 1.6
最佳答案
IBM JVM 具有转储触发器,允许您非常灵活地触发转储。例如,您可以将 JVM 配置为在输入给定方法时进行转储:
-Xtrace:trigger=method{java/lang/String.substring,coredump}
您也可以指定计数,以便在输入方法 1000 次和 1001 次时生成转储:
-Xtrace:trigger=method{java/lang/String.getBytes,coredump,,1000,2}
获得转储后,使用带有 IBM 扩展 ( http://www.ibm.com/developerworks/java/jdk/tools/memoryanalyzer/ ) 的 Eclipse Memory Analyzer 是进行分析的一个不错的选择。 IBM 扩展知道如何解析 IBM 转储(如您所期望的),并且还可以了解哪些内存使用模式表明存在潜在问题。
关于java - WebSphere 7 - 如何确定哪些对象在运行时耗尽了堆内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38402409/