小编wal*_*ton的帖子

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

在升级到运行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小时重新启动应用服务器不会是一个非常好的解决方案.

java jboss memory-leaks

5
推荐指数
1
解决办法
5980
查看次数

标签 统计

java ×1

jboss ×1

memory-leaks ×1