Anon块是通过malloc或mmap分配的“大”块-请参见手册页。因此,它们与Java堆无关(除了整个堆应该存储在这样的块中的事实)。
以我的经验,线程栈也使用匿名块。如果您看到很多匿名块都具有相同的大小,并且大小为512k到4Mb(对于正在运行的Tomcat进程,以下示例重复了十几次),则可能是原因。根据程序的不同,最多可能有几十个。如果看到成千上万,则表示线程问题。
b089f000 504K rwx-- [ anon ]
b091d000 12K ----- [ anon ]
b0920000 504K rwx-- [ anon ]
b099e000 12K ----- [ anon ]
b09a1000 504K rwx-- [ anon ]
b0a1f000 12K ----- [ anon ]
但这留下了一个问题:您为什么要使用 pmap 诊断Java内存问题?