我试图理解为什么ColdFusion 9(JRun)服务器会抛出以下错误:
java.lang.OutOfMemoryError: requested 32756 bytes for ChunkPool::allocate. Out of swap space?
JVM参数如下:
-server -Dsun.io.useCanonCaches=false -XX:MaxPermSize=192m -XX:+UseParallelGC -
当转储发生时,我正在运行jconsole,并尝试将一些数字与上面的-XX:MaxPermSize=192m
设置进行协调。当JRun死亡时,它具有以下内存使用情况:
Heap
PSYoungGen total 136960K, used 60012K [0x5f180000, 0x67e30000, 0x68d00000)
eden space 130624K, 45% used [0x5f180000,0x62c1b178,0x67110000)
from space 6336K, 0% used [0x67800000,0x67800000,0x67e30000)
to space 6720K, 0% used [0x67110000,0x67110000,0x677a0000)
PSOldGen total 405696K, used 241824K [0x11500000, 0x2a130000, 0x5f180000)
object space 405696K, 59% used [0x11500000,0x20128360,0x2a130000)
PSPermGen total 77440K, used 77070K [0x05500000, 0x0a0a0000, 0x11500000)
object space 77440K, 99% used [0x05500000,0x0a043af0,0x0a0a0000)
我的第一个问题是,转储文件显示
PSPermGen
是问题所在——它说总共是77440K,但根据我的192m JVM参数,应该是196608K,对吗?我错过了什么?这与其他非堆池——代码缓存有关吗?我在运行32位机器上,Windows Server 2008 Standard。我正在考虑增加
PSPermGen
JVM参数,但我想了解为什么它似乎没有使用其当前分配。提前致谢!