当前位置:  开发笔记 > 编程语言 > 正文

如何在Jboss AS 5.1中追踪非堆JVM内存泄漏?

如何解决《如何在JbossAS5.1中追踪非堆JVM内存泄漏?》经验,为你挑选了0个好方法。

在升级到运行JRE 1.6_17,CentOS 5 Linux的JBoss AS 5.1之后,JRE进程在大约8小时后耗尽内存(在32位系统上达到3G最大值).这种情况发生在中等负载下群集中的两台服务器上.Java堆使用率稳定下来,但整体JVM占用空间不断增长.线程数非常稳定,最大线程为370个线程,线程堆栈大小设置为128K.

JVM的占地面积达到3G,然后它死于:

java.lang.OutOfMemoryError: requested 32756 bytes for ChunkPool::allocate. Out of swap space?

  Internal Error (allocation.cpp:117), pid=8443, tid=1667668880
  Error: ChunkPool::allocate

当前的JVM内存args是:

-Xms1024m -Xmx1024m -XX:MaxPermSize = 256m -XX:ThreadStackSize = 128

鉴于这些设置,我预计流程足迹将在1.5G左右.相反,它只会持续增长,直到达到3G.

似乎没有一个标准的Java内存工具可以告诉我JVM本机端正在吃掉所有这些内存.(Eclipse MAT,jmap等).关于PID的Pmap只给了我一堆[anon]分配,这些分配并没有多大帮助.如果我没有加载JNI或java.nio类,就会出现此内存问题,据我所知.

如何解决JVM的本机/内部问题以找出所有非堆内存的位置?

谢谢!我正在快速耗尽想法,每8小时重新启动应用服务器不会是一个非常好的解决方案.

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有