升级到JBoss AS 5.1后,运行JRE 1.6_17,CentOS 5 Linux,在约8小时后(32位系统上的最大值为3G),JRE进程会耗尽内存。这在负载适中的集群中的两个服务器上都会发生。Java堆使用量稳定下来,但整个JVM占用空间仍然不断增长。线程计数非常稳定,并且以128K设置线程堆栈大小为370线程的最大值。
JVM的占用空间达到3G,然后出现以下错误:
java.lang.OutOfMemoryError: requested 32756 bytes for ChunkPool :: allocate。交换空间用完了吗?
内部错误(allocation.cpp:117),pid = 8443,tid = 1667668880 错误:ChunkPool :: allocate 当前JVM内存参数为:
-Xms1024m -Xmx1024m -XX:MaxPermSize = 256m -XX:ThreadStackSize = 128
鉴于这些设置,我希望进程占用空间能够稳定在1.5G左右。但实际情况是,它会持续增长,直到达到3G。
似乎没有标准的Java内存工具可以告诉我JVM本地端正在消耗所有这些内存(例如Eclipse MAT,jmap等)。 PID上的Pmap只给我一堆[anon]分配,这并没有真正帮助我。据我所知,当没有JNI或java.nio类加载时,这种内存问题就会发生。
如何排除JVM的本地/内部方面,以查找所有非堆内存去向?
谢谢!我很快就会用尽主意,每8小时重新启动应用程序服务器不会是一个很好的解决方案。
JVM的占用空间达到3G,然后出现以下错误:
java.lang.OutOfMemoryError: requested 32756 bytes for ChunkPool :: allocate。交换空间用完了吗?
内部错误(allocation.cpp:117),pid = 8443,tid = 1667668880 错误:ChunkPool :: allocate 当前JVM内存参数为:
-Xms1024m -Xmx1024m -XX:MaxPermSize = 256m -XX:ThreadStackSize = 128
鉴于这些设置,我希望进程占用空间能够稳定在1.5G左右。但实际情况是,它会持续增长,直到达到3G。
似乎没有标准的Java内存工具可以告诉我JVM本地端正在消耗所有这些内存(例如Eclipse MAT,jmap等)。 PID上的Pmap只给我一堆[anon]分配,这并没有真正帮助我。据我所知,当没有JNI或java.nio类加载时,这种内存问题就会发生。
如何排除JVM的本地/内部方面,以查找所有非堆内存去向?
谢谢!我很快就会用尽主意,每8小时重新启动应用程序服务器不会是一个很好的解决方案。