Java 进程在 GC 之前停止

标签 java process jvm hbase cpu

我们正在生产环境中运行 HBase HMaster 进程。通常情况下,日志文件中有很多日志。但对于特定的周期,没有记录任何内容,我们认为发生了GC。正如预期的那样,gc 发生在那个时间,但不是整个期间发生的。

例如,gc 从 32:24 开始,持续 25.53 秒。但从 32:06 到 32:49 我没有收到任何日志。我想知道 gc 之前发生了什么。它似乎也“停止了世界”。

我确定 HMaster 在其进程正在运行时会写入日志。与CPU时间有关吗?我怎样才能弄清楚?

最佳答案

试试这个:

-server -d64 -Xms10240m -Xmx10240m -XX:PermSize=512M -XX:MaxPermSize=512M -XX:NewSize=5120m -XX:MaxNewSize=5120m -XX:-UseAdaptiveSizePolicy -XX:+UseParNewGC -XX :SurvivorRatio=20 -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+OptimizeStringConcat -XX:ParallelGCThreads=8 -XX:ConcGCThreads=8 -XX:+CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:+ParallelRefProcEnabled -XX: +CMSScavengeBeforeRemark -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath="${bundled.server.access.log}"-Xloggc:"${bundled.server.access.log}"/java_gc.log -XX:+PrintGCDetails -XX :+PrintGCDateStamps -XX:+PrintTenuringDistribution

此设置使您的伊甸园空间 + 幸存者 = 5GB,老一代 = 5GB。 删除 MaxDirectMemorySize 参数,因为 JVM 自动缩放直接内存缓冲区

关于Java 进程在 GC 之前停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25518875/

相关文章:

java - 使用哪种设计模式?

java - 令人惊讶的 "inferred type does not conform to upper bound"错误

java - 一个程序运行在多个 JVM 上?

java - Weblogic 10.3.6 域向导无法创建 JVM

java - 显示 bash :/usr/lib/jvm/java-7-oracle=/usr/lib/jvm/java-8-oracle: No such file or directory in terminal

java - 小服务程序间通信

javac 给出一条错误消息,它已找到

powershell - 如何在 Powershell 中获取新创建的 Firefox 窗口的正确 PID?

multithreading - Web-Wokers,并发还是并行?

python - 为什么在 python 中主进程退出时子进程 (daemon=True) 不退出?