java 频繁gc_java – 全GC变得非常频繁

我有一个

Java webapp在一个tomcat实例上运行.在高峰时段,webapp每秒服务约30页,通常约为15页.

我的环境是:

O/S: SUSE Linux Enterprise Server 10 (x86_64)

RAM: 16GB

server: Tomcat 6.0.20

JVM: Java HotSpot(TM) 64-Bit Server VM 1.6.0_14

JVM options:

CATALINA_OPTS="-Xms512m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m

-XX:+UseParallelGC

-Djava.awt.headless=true

-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps"

JAVA_OPTS="-server"

经过几天的正常运行时间,全面的GC开始更频繁地出现,这对于应用程序的可用性来说是一个严重的问题. tomcat重启后,问题消失了,当然在5到10或30天后返回(不一致).

它在重新启动之前显示一个日志,在6.6天的正常运行时间,应用程序遭受痛苦,因为Full GC需要2.5秒,每6秒钟发生一次.

然后,它显示刚刚重启之后的日志,其中Full GC仅在5-10分钟内发生.

我有两个转储使用jmap -dump:format = b,file = dump.hprof PID,当完整的GC发生时(我不知道我是否完全正确的时候完全GC发生或2个全GC之间),并在http://www.eclipse.org/mat/开张,但没有任何有用的泄漏嫌疑犯:

> 60MB:1“org.hibernate.impl.SessionFactoryImpl”的实例(我用ehcache使用hibernate)

> 80MB:1,024个“org.apache.tomcat.util.threads.ThreadWithAttributes”实例(这些可能是tomcat的1024个工作)

> 45MB:“net.sf.ehcache.store.compound.impl.MemoryOnlyStore”的37个实例(这些应该是ehcache中的〜37个缓存区域)

注意我从来没有得到一个OutOfMemoryError.

关于我应该在哪里看的任何想法?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值