java - 4分钟消失在jvm

标签 java jvm freeze

我正在使用 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 参数是:

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

最佳答案

可能的原因:

  1. 日志记录线程因某些锁或其他原因而挂起。
  2. 巨大的 GC pig 。
  3. 最坏的情况,系统可能会阻塞您的进程一段时间(罕见)

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

相关文章:

java - 输入 0 时方法卡住

java - 如何在IntelliJ IDEa中添加@Contract注解?

java - 目标 org.jvnet.jax-ws-commons :jaxws-maven-plugin:2. 3:wsgen 的执行失败

iphone - Xcode 4.2。运行时卡住 "Attaching to myapp"

java - 具有相同字符串值的两个不同变量引用相同的内存地址

java - 如何使用 Attach API 列出当前正在运行的 JVM

visual-studio-2012 - 如何对 Visual Studio 2012 挂起/锁定进行故障排除

java - 如何在不知道图像名称的情况下更改 Android 中按钮的背景图像?

java - 调用 pack() JPOS 时获取 NullPointerException

.net - 最佳 JIT 优化