我试图理解为什么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,但它应该是196608K(基于我的192m JVM参数),对吧?我在这里错过了什么?这与其他非堆池 – 代码缓存有关吗?
我正在运行32位机器,Windows Server 2008 Standard.我正在考虑增加PSPermGen JVM参数,但我想理解为什么它似乎没有使用它的当前分配.
提前致谢!