日志文件大小设置_G1 的参数设置

资料整理于网上,相关参数也在生产实践中操作过。

cc3c687db628f2850ad482a7d19b2964.png

(0)使用 perfma 生成 JVM 参数

https://opts.console.perfma.com/

(1)在 JVM 参数中一定要设置

-XX:+HeapDumpAfterFullGC-XX:+HeapDumpOnOutOfMemoryError

两个参数,可以在发送 FGC 和 OOM 的时候将当时的 Java 堆情况记录下来,用于事后分析;

-XX:HeapDumpPath=/data/gc

这个参数与 

-XX:+HeapDumpOnOutOfMemoryError

共同作用,设置 heap-dump 时内容输出文件。

(2)GC 日志要单独打印到一个日志文件中,方便分析,如果不特别设置则 GC 日志会打印到 stdout.log 中,和其他的日志混合在中间,影响后面的问题排查。

启用 gc 日志打印功能

-XX:+PrintGCDetails

打印可读的日期而不是时间戳

-XX:+PrintGCDateStamps

使用 

-XX:GCLogFileSize

设置合适的 GC 日志文件大小,

使用 

-XX:NumberOfGCLogFiles

 设置要保留的 GC 日志文件个数,

使用 

-Xloggc:/path/to/gc.log

 设置 GC 日志文件的位置

(3)设置负责垃圾收集的线程个数,这个参数的值的设置,跟 CPU 有关,如果物理 CPU 支持的线程个数小于 8,则最多设置为 8;如果物理 CPU 支持的线程个数大于 8,则默认值为 number * 5/8

-XX:ParallelGCThreads

(4)设置堆的大小

-Xmx5440M-Xms5440M

(5)JDK8 的永生代几乎可用完机器的所有内存,为了保护服务器不会因为内存占用过大无法连接,需要设置一个 512M 的初始值,512M 的最大值保护一下

-XX:MaxMetaspaceSize=512M-XX:MetaspaceSize=512M

(6)设置 G1 的耗时

-XX:+UseG1GC-XX:MaxGCPauseMillis=100

毫秒数,收集器会尽量的保证垃圾回收耗时不超过设定的这个阀值,但是如果太小的话,会导致 GC 的频率增加

(7)并行地处理 Reference 对象

-XX:+ParallelRefProcEnabled

默认为 false,并行地处理 Reference 对象,如 WeakReference,除非在 GC log 里出现 Reference 处理时间较长的日志,否则效果不会很明显。

(8)指定致命错误日志位置。一般在 JVM 发生致命错误时会输出类似 hs_err_pid.log 的文件,默认是在工作目录中(如果没有权限,会尝试在/tmp 中创建),不过还是自己指定位置更好一些,便于收集和查找,避免丢失

-XX:ErrorFile=/data/gc/hs_err_pid%p.log

(9)程序执行类加载

-verbose:class

(10)打印 JVM 在两次停顿之间正常运行时间,与 

-XX:+PrintGCApplicationStoppedTime

一起使用效果更佳。

-XX:+PrintGCApplicationConcurrentTime-XX:+PrintGCApplicationStoppedTime

(11)查看每次 minor GC 后新的存活周期的阈值

-XX:+PrintTenuringDistribution
扩展阅读

1. Java Hotspot G1 GC的一些关键技术

https://tech.meituan.com/2016/09/23/g1.html

23596ed0b8e9b8f386d382dda481f28d.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值