我在tomcat进程上做一个pmap,我看到一些巨大的anon块。从我读到的内容块用于线程堆栈和JNI。我有一个非常适度的线程数。我怎样才能找出导致这些巨大的无限块的原因?
00000000ee0d0000 26752K rwx-- [anon]
<00> 00000000efaf0000 33792K rwx-- [anon]00000000f1bf0000 25856K rwx-- [anon]
<00> 00000000f3530000 39680K rwx-- [anon](旁注是pmap正确的方法来衡量分配给tomcat的内存量?)
答案 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,混合模式)