巨大的anon在pmap中阻止

时间:2010-04-09 23:27:06

标签: tomcat jvm

我在tomcat进程上做一个pmap,我看到一些巨大的anon块。从我读到的内容块用于线程堆栈和JNI。我有一个非常适度的线程数。我怎样才能找出导致这些巨大的无限块的原因?

00000000ee0d0000 26752K rwx-- [anon]

<00> 00000000efaf0000 33792K rwx-- [anon]

00000000f1bf0000 25856K rwx-- [anon]

<00> 00000000f3530000 39680K rwx-- [anon]

(旁注是pmap正确的方法来衡量分配给tomcat的内存量?)

2 个答案:

答案 0 :(得分:0)

匿名内存映射几乎用于需要一些动态分配内存的任何内容,包括例如线程堆栈,也是堆。

答案 1 :(得分:0)

我有同样的问题,通过pmap,我在我的java应用程序中找到了使用JNI的697 [anon]块。它耗尽了记忆。当我评论以下行代码时,问题就会消失。

jEnv-&gt; CallBooleanMethod(m_jobj,jmid,jData);

该方法是将对象从c ++传递到java端,它被多次调用(&gt; 10000000)

但我不能发表评论,我需要调用该方法。

它是由JDK Bug6200343引起的(许多jni调用中的内存泄漏(NewString等)? 我的jdk版本是 java版“1.6.0_19” Java(TM)SE运行时环境(版本1.6.0_19-b04) Java HotSpot(TM)服务器VM(版本16.2-b04,混合模式)