我为我的java应用程序配置了以下参数-Xmx = 46g,-Xms = 46g,NewSize = 2g。
我们没有配置permgen的大小,但在JCONSOLE中它显示最大perm gen大小为83mb。
在运行稳定性测试时,我们可以看到随机地在GC日志中获得以下内容。
[Full GC(Permanent Generation Full)489.822:[CMS: 11384171K-> 4403070K(46137344K),10.9407280秒] 11572765K-> 4403070K(48024832K),[CMS Perm:37142K-> 37062K(37376K)], 10.9413340秒] [时间:用户= 10.80 sys = 0.13,真实= 10.94秒]
我找不到这个GC调用的原因,因为有永久生成的可用空间(因为83 mb显示为最大值,并且提交的perm gen内存显示为appx 37MB)。
请你分享一下你的想法吗?
由于 JK
答案 0 :(得分:2)
即使您的 max PermGen可能是83 MB,但JVM在上面的日志点上只分配了36,5 MB。似乎可以公平地假设JVM执行完整的GC并尝试继续发布任何内容,然后再从操作系统请求更多内存以扩展其PermGen空间(最大为83 MB)。
您可以尝试使用-XX:PermSize
设置初始PermGen尺寸。