Java进程消耗超过2GB内存

3

JacORB通知服务的Java进程在Windows 2008上消耗约2GB内存。通过YourKit,我得知Java堆不超过30MB。因此,我得出结论,Java堆中没有泄漏。我想知道内存是从哪里消耗的。我在网上阅读了几篇关于Java Native Heap的文章。如何判断Native Heap是否有泄漏?我们使用的是Oracle(sun)的JRE 1.6。

1个回答

0

在Java中分析内存泄漏的工具是Memory Analyzer,非常出色。它可以作为Eclipse插件或独立应用程序下载。但我推荐后者,一定要试试。它还有非常好的帮助页面。


这难道不跟其他内存分析工具一样吗?它支持查看/排除Java应用程序使用的本机内存吗? - Sanjay T. Sharma
我不确定 native 内存(我已经有一段时间没有使用它了),但它确实可以让您分析可能的内存泄漏。 - jFrenetic
好的,原始问题提到了本地堆的问题,因此我才问这个问题。 - Sanjay T. Sharma
也许你可以看一下这个演示文稿:http://publib.boulder.ibm.com/infocenter/ieduasst/v1r1m0/index.jsp?topic=/com.ibm.iea.java/java/6.0/MonitorDebug/3-ProfilingNativeMemoryUsage/player.html,它提供了一些概括性的想法。 - jFrenetic
谢谢。在这里我并不确定本地堆存在问题。但是从您的工具包中可以清楚地看出,Java堆(可以使用-Xmx设置)中没有泄漏。除了本地堆和PermGen之外,您有什么其他想法,Java进程可以消耗内存的地方?从您的工具包中,我可以发现非堆内存也没有消耗太多内存。那么内存还在哪里被消耗? - Sharat Bhat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接