我知道有很多不同的地方分配了 JVM 堆外内存:线程堆栈、内存映射文件(例如 zip 文件)、NIO 缓冲区、JNI 库分配等。
但我希望前四个分配有一个规范的标识,例如:
/apps/java/jdk1.7.0_05/bin/java -Xmx1024m -Xms1024m -XX:MaxPermSize=256m ...
0000000000400000 4K r-x-- /apps/java/jdk1.7.0_05/bin/java
0000000000600000 4K rw--- /apps/java/jdk1.7.0_05/bin/java
0000000001e69000 280920K rw--- [ anon ]
00000000b0000000 132288K rw--- [ anon ]
00000000b8130000 129856K rw--- [ anon ]
00000000c0000000 1048576K rw--- [ anon ]
00000030b4e00000 120K r-x-- /lib64/ld-2.12.so
...
我认为最后一个很可能是堆,基于它的大小,但有人知道其他三个是什么吗?能够识别尽可能多anon
的部分以用于诊断目的将很有帮助。