来自JBoss JMX控制台的对象内存占用

时间:2013-08-22 00:57:42

标签: java memory-leaks jboss jmx

我们在生产中运行JBoss EDS服务器并且它消耗了大量内存。我们将内存从4GB增加到8GB,我们看到内存消耗仍在逐渐增加,最后OutOfMemoryError和服务器出现故障。怀疑是我们的应用程序中存在内存泄漏。

我们希望看到可能导致此问题的原因?我们可以访问JMX控制台,我们在线程中看不到可能导致此问题的任何内容。我们希望看到哪些对象正在增长以及它们正在使用多少内存。 JMX控制台如何在这方面帮助我?

我发现JBoss内存分析器可以提供帮助,但服务器没有在生产实例上安装分析器。显然,我们无法安装它并在生产中重新启动。它会产生后果。

我们还发现服务器正在运行OpenJDK。有没有人在OpenJDK上看到任何运行JBoss AS的问题? OpenJDK中的垃圾收集算法有多好?

2 个答案:

答案 0 :(得分:1)

我建议您在任何OutOfMemory错误上触发堆转储。在OpenJDK中,您可以使用选项 -XX:+ HeapDumpOnOutOfMemoryError -XX:HeapDumpPath = &lt; pathname&gt; <来启用此功能/ em>的。

(查看有关VM Fatal Error Handling的更多信息)。

捕获堆转储后,可以使用像jhat这样的堆转储解析器对其进行分析。

答案 1 :(得分:0)

JBoss将消耗所有可用内存。如果你给它更多,它将使用更多。除非这会导致一些内存异常,否则这不是什么大问题。

注意:“使用”是指使用专用标记。