我试图理解为什么 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 参数,但我想了解为什么它似乎没有使用当前的分配。
提前致谢!