我正在使用Eclipse Virgo托管我的应用程序。该应用程序将每10秒写入一个日志。
要查看心跳日志,我发现4分钟是空白的。

我已经检查了gc.hprof.txt,但未找到完整的gc。
jvm由于某种原因而暂停并在4分钟后恢复?
你能给我一些建议吗?

日志:

2011-09-14 09:46:30,105 DEBUG [T=142][SbusHeartbeatClient.run() 109] Heartbeat:token=1,node=SbusNodeInfo
2011-09-14 09:46:40,105 DEBUG [T=141][SbusHeartbeatClient.run() 109] Heartbeat:token=1,node=SbusNodeInfo
2011-09-14 09:46:50,105 DEBUG [T=156][SbusHeartbeatClient.run() 109] Heartbeat:token=1,node=SbusNodeInfo
2011-09-14 09:47:00,106 DEBUG [T=154][SbusHeartbeatClient.run() 109] Heartbeat:token=1,node=SbusNodeInfo
2011-09-14 09:47:10,106 DEBUG [T=135][SbusHeartbeatClient.run() 109] Heartbeat:token=1,node=SbusNodeInfo
2011-09-14 09:51:35,682 DEBUG [T=141][SbusHeartbeatClient.run() 109] Heartbeat:token=1,node=SbusNodeInfo


JVM args是:

JVM_MEM=1536m
JVM_MN=318m
JVM_PS=318m

JAVA_OPTS="-server -Xms$JVM_MEM -Xmx$JVM_MEM -Xmn$JVM_MN -XX:ReservedCodeCacheSize=96m"
JAVA_OPTS="$JAVA_OPTS -XX:PermSize=$JVM_PS -XX:MaxPermSize=$JVM_PS"
JAVA_OPTS="$JAVA_OPTS -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:MaxTenuringThreshold=3"
JAVA_OPTS="$JAVA_OPTS -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=3 -XX:+CMSParallelRemarkEnabled"
JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCDetails -XX:+PrintHeapAtGC -Xloggc:log/gc.hprof.txt"

Host: SuSE Linux  2.6.32.12 64bit
Java: JDK 1.6.0_24 64bit

最佳答案

可能的原因:


日志记录线程因某些锁定或其他原因而挂起。
巨大的GC猪。
最坏的情况是,系统可能已阻塞您的进程一段时间(很少)

关于java - 4分钟在jvm中消失了,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7441715/

10-09 04:55