4c8g的服务器,使用G1的jvm启动参数配置

515 阅读3分钟

G1垃圾回收器可以运行在JDK 8上。在JDK 8中,G1GC是一个稳定且推荐的垃圾回收器,尤其适用于需要低延时和可预测停顿时间的应用。

以下是一个适用于JDK 8的G1GC配置示例:

java -Xms4g -Xmx4g \
-XX:+UseG1GC \
-XX:MaxGCPauseMillis=200 \
-XX:InitiatingHeapOccupancyPercent=45 \
-XX:ConcGCThreads=4 \
-XX:ParallelGCThreads=4 \
-XX:G1NewSizePercent=30 \
-XX:G1MaxNewSizePercent=60 \
-XX:G1MixedGCLiveThresholdPercent=85 \
-XX:G1HeapRegionSize=16m \
-XX:SurvivorRatio=8 \
-XX:MetaspaceSize=128m \
-XX:MaxMetaspaceSize=256m \
-XX:+ParallelRefProcEnabled \
-XX:+PrintGCDetails \
-XX:+PrintGCDateStamps \
-XX:+PrintGCTimeStamps \
-XX:+PrintGCApplicationStoppedTime \
-XX:+PrintGCApplicationConcurrentTime \
-Xloggc:gc.log

说明

  • -Xms4g-Xmx4g:设置JVM堆内存的初始大小和最大大小为4GB(根据应用需求调整)。
  • -XX:+UseG1GC:启用G1垃圾回收器。
  • -XX:MaxGCPauseMillis=200:设置最大GC停顿时间目标为200毫秒(根据延迟需求调整)。
  • -XX:InitiatingHeapOccupancyPercent=45:在堆使用率达到45%时启动并发标记周期。
  • -XX:ConcGCThreads=4:设置并发GC线程数为4(与CPU核心数匹配)。
  • -XX:ParallelGCThreads=4:设置并行GC线程数为4(与CPU核心数匹配)。
  • -XX:G1NewSizePercent=30:设置年轻代最小空间占整个堆的30%。
  • -XX:G1MaxNewSizePercent=60:设置年轻代最大空间占整个堆的60%。
  • -XX:G1MixedGCLiveThresholdPercent=85:设置在混合GC周期中,确定是否回收的存活对象阈值为85%。
  • -XX:G1HeapRegionSize=16m:设置G1堆区域大小为16MB(根据堆大小和应用需求调整)。
  • -XX:SurvivorRatio=8:设置新生代Eden区与Survivor区的大小比例为8。
  • -XX:MetaspaceSize=128m:设置Metaspace初始大小为128MB。
  • -XX:MaxMetaspaceSize=256m:设置Metaspace最大大小为256MB(根据应用需求调整)。
  • -XX:+ParallelRefProcEnabled:启用并行引用处理,以减少GC停顿时间。
  • -XX:+PrintGCDetails:打印GC详细信息。
  • -XX:+PrintGCDateStamps:在GC日志中包含日期戳。
  • -XX:+PrintGCTimeStamps:在GC日志中包含时间戳。
  • -XX:+PrintGCApplicationStoppedTime:打印应用程序由于GC而停止的时间。
  • -XX:+PrintGCApplicationConcurrentTime:打印应用程序并发运行的时间。
  • -Xloggc:gc.log:将GC日志输出到gc.log文件。

调优建议

  1. 监控和调整:在实际运行中,监控GC日志并分析应用的GC行为,根据观察结果调整参数,如-XX:MaxGCPauseMillis-XX:InitiatingHeapOccupancyPercent等。
  2. 负载测试:在生产环境部署前,通过负载测试来验证配置的效果,并确保在高负载下仍能满足低延时和低停顿的要求。

通过上述配置和调优步骤,可以更好地利用G1垃圾回收器,在JDK 8环境下满足低延时和低停顿的需求。

下面是一行完整的命令,用于通过 java -jar 启动一个Java项目并设置G1垃圾回收器的参数:

java -Xms4g -Xmx4g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:InitiatingHeapOccupancyPercent=45 -XX:ConcGCThreads=4 -XX:ParallelGCThreads=4 -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=60 -XX:G1MixedGCLiveThresholdPercent=85 -XX:G1HeapRegionSize=16m -XX:SurvivorRatio=8 -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -XX:+ParallelRefProcEnabled -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationConcurrentTime -Xloggc:gc.log -jar your-application.jar

请将 your-application.jar 替换为您实际的Java应用的JAR文件名。