我有一个java程序(在内存操作中做了很多)。我已经为进程分配了10GB的java堆(-Xmx)。系统的总内存为30 GB。 Java程序实际上占用了近24 GB的内存(我可以从svmon输出中看到)。 Java堆utlization低于10 GB(来自详细GC)。我想知道什么是使用剩余的内存(24-10 = 14 GB的内存)?它是原生堆吗? (我没有任何可以使用JNI代码的JNI代码或任何其他第三方库。)您能否告诉我如何监控本机内存使用情况?
操作系统:AIX
Java:IBM JVM 1.6
CPU:Power 7 SMT -4
答案 0 :(得分:2)
另一种类型的内存是非堆内存。尝试使用JConsole监控情况。
在此page about YourKit中我读到了:
非堆内存大小的异常增长可能表示存在潜在问题,在这种情况下,您可以检查以下内容:
答案 1 :(得分:0)
答案 2 :(得分:0)
感谢您的回忆。
我刚才把它放在这里:https://www.ibm.com/developerworks/java/library/j-nativememory-aix/
答案 3 :(得分:0)
IBM JMAT是一个很好的工具,但需要分析很多内存。您使用的内存量是否适合您正在操作的对象,您有多确定?随着一个大的调用堆栈,我开始探测泄漏的引用。