一尘不染

在生产Java服务器中打开GC日志记录是常见的做法吗?

java

我在几个地方看到[1]人们在生产服务器(任务关键)中启动GC日志记录,例如

java -server -Xms1024m -Xmx1024m -XX:NewSize=256m \
     -XX:MaxNewSize=256m \
     -XX:+UseConcMarkSweepGC \
     -XX:CMSInitiatingOccupancyFraction=70
     -XX:+PrintGCDetails \
     -XX:+PrintGCDateStamps \
     -XX:+PrintTenuringDistribution \
     -Xloggc:logs/gc.log \
     -Djava.awt.headless=true
     -Dcom.sun.management.jmxremote -classpath ...

这些天是否推荐生产环境中的做法?

更新 :我提供了来自Oracle的链接[2],还建议监视生产服务器上的GC。


阅读 341

收藏
2020-12-03

共1个答案

一尘不染

是的 ,这是一种常见的做法。这 往往极力推荐 ,我给的例子和下面引用。

为什么GC日志记录适合生产Java服务器:

  1. 最小开销 -GC日志记录对整个系统性能的 开销最小

    • 例如,前JVM Performance Architect和Java Performance的合著者Charlie Hunt对此进行了声明。
    • 世界上所有运行Java Enterprise软件的SPEC基准测试都在启用了GC日志记录的生产服务器上运行。这证实了日志记录的开销很低,并且由发布基准测试结果的性能专家对日志记录路径进行了高度调整。
    • 长期记录 对于 分析 应用程序性能 绝对 至关重要 。必须始终启用GC日志记录,以便管理员能够观察GC行为并相应地调整应用程序。
2020-12-03