试图找到泄漏!anon对pmap意味着什么?

我试图找到我的内存在哪里运行在Linux上的Java进程。有人建议我使用pmap -x来确切查看内存在做什么。

输出的确很长,但是基本上它的很大一部分是重复的:

00007fbf75f6a000    1016       -       -       - rwx--    [ anon ]

00007fbf76068000 12 - - - ----- [ anon ]

这到底是什么意思?为什么我有这么多条目(4000+)?

回答:

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内存问题?

以上是 试图找到泄漏!anon对pmap意味着什么? 的全部内容, 来源链接: utcz.com/qa/434055.html

回到顶部