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