完整的GC,PSPermGen没有清理

时间:2012-09-05 13:38:28

标签: garbage-collection

我的Java EE服务器运行良好,然后在10分钟内完全gc开始更频繁地发生,然后最终由于GC而一直停止。 PSPermGen尚未发布。

我的JVM设置是:

设置JAVA_OPTS =%JAVA_OPTS%-Xms4g -Xmx4g -XX:MaxPermSize = 512m -XX:NewRatio = 3

  

2012-09-05T14:03:10.394 + 0100:94287.753:[Full GC [PSYoungGen:843584K-> 0K(947200K)] [ParOldGen:3077347K-> 3117145K(3145728K)] 3920931K-> 3117145K( 4092928K)[PSPermGen:181533K-> 181521K(186944K)],10.9564398 secs] [次:用户= 286.14 sys = 0.19,real = 10.97 secs]   应用程序线程停止的总时间:10.9678339秒   申请时间:0.0023102秒   应用程序线程停止的总时间:0.0088344秒   申请时间:0.3052301秒   应用程序线程停止的总时间:0.0085634秒   申请时间:0.1125068秒   2012-09-05T14:03:21.798 + 0100:94299.158:[Full GC [PSYoungGen:842024K-> 22409K(947200K)] [ParOldGen:3117145K-> 3145232K(3145728K)] 3959170K-> 3167641K(4092928K)[ PSPermGen:181521K-> 181521K(186752K)],11.4649901 secs] [次:用户= 372.58 sys = 0.11,real = 11.47 secs]   应用程序线程停止的总时间:11.4757898秒   申请时间:0.0706553秒   应用程序线程停止的总时间:0.0102510秒   申请时间:0.3951514秒   2012-09-05T14:03:33.748 + 0100:94311.110:[Full GC [PSYoungGen:843584K-> 34503K(947200K)] [ParOldGen:3145232K-> 3141687K(3145728K)] 3988816K-> 3176190K(4092928K)[ PSPermGen:181521K-> 181521K(186112K)],10.9699419 secs] [次:用户= 369.43 sys = 0.14,real = 10.97 secs]   应用程序线程停止的总时间:10.9806713秒   申请时间:0.0027075秒

任何线索可能是什么原因?内存泄漏或JVM可以更好地调整吗?

1 个答案:

答案 0 :(得分:0)

从日志开始,很少有事情是清楚的。要么系统真正需要太多内存,要么无法清除终生代,导致3.1GB的持续消耗。这部分只有你可以回答。 或者有内存泄漏。内存泄漏可能/不可能,因为使用的olegen空间恒定在3.145GB左右。内存泄漏通常会增加。 可能更多的日志可以帮助。如果这个因素随着时间的推移而增加,那么请放心 - 泄漏。 如果不变,则应用程序真正缺少所需的内存。