0

我的 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 [PSYUNGGEN:843584K--> 0K> 0K(947200K)] -> 181521K(186944K)], 10.9564398 秒] [时间: user=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->0K240K(947202) )] [ParOldGen: 3117145K->3145232K(3145728K)] 3959170K->3167641K(4092928K) [PSPermGen: 181521K->181521K(186752K)], 11.4649901 秒] [时间:user=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:[完整GC [Psyounggen:843584K--> 34503K(947200K)] ],10.9699419 secs] [Times: user=369.43 sys=0.14, real=10.97 secs] 应用程序线程停止的总时间:10.9806713 秒应用程序时间:0.0027075 秒0706553 秒应用程序线程停止的总时间:0.0102510 秒应用程序时间:0.3951514 秒 2012-09-05T14:03:33.748+0100:94311.110:[Full GC [PSYoungGen:843584K->34503K(947200K)][ParKOldGen: ->3141687K(3145728K)] 3988816K->3176190K(4092928K) [PSPermGen: 181521K->181521K(186112K)], 10.9699419 secs] [Times: user=369.43 sys=0.14, real=10.9 应用程序线程的总时间已停止:10.9806713 秒应用时间:0.0027075 秒0706553 秒应用程序线程停止的总时间:0.0102510 秒应用程序时间:0.3951514 秒 2012-09-05T14:03:33.748+0100:94311.110:[Full GC [PSYoungGen:843584K->34503K(947200K)][ParKOldGen: ->3141687K(3145728K)] 3988816K->3176190K(4092928K) [PSPermGen: 181521K->181521K(186112K)], 10.9699419 secs] [Times: user=369.43 sys=0.14, real=10.9 应用程序线程的总时间已停止:10.9806713 秒应用时间:0.0027075 秒97秒]应用程序线程停止的总时间:10.9806713秒应用程序时间:0.0027075秒97秒]应用程序线程停止的总时间:10.9806713秒应用程序时间:0.0027075秒

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

4

1 回答 1

0

好吧,从日志中,很少有事情是清楚的。要么系统真的需要太多内存,无法清除tenured generation,导致3.1GB的持续消耗。这部分只有你能回答。或者有内存泄漏。内存泄漏可能/不可能,因为 ole gen 已用空间恒定在 3.145GB 左右。内存泄漏通常甚至会增加。可能更多的日志可以提供帮助。如果这个因素随着时间的推移而增加,那么请放心 - 泄漏。如果恒定,则应用程序确实缺少所需的内存。

于 2012-11-12T07:08:32.963 回答