GC日志详解以及根据gc日志优化JVM

本文详细介绍了如何分析和优化Java应用程序的GC日志,包括如何打印GC日志、理解日志关键指标,如时间戳、内存区域变化、GC类型等。通过调整元空间参数成功避免了Full GC,并推荐了gceasy工具进行大规模日志分析。此外,讨论了ParNewGC和ConcMarkSweepGC组合以及G1收集器的GC日志特点。
摘要由CSDN通过智能技术生成

GC日志

对于java应用我们可以通过一些配置把程序运行过程中的gc日志全部打印出来,然后分析gc日志得到关键性指标,分析 GC原因,调优JVM参数。
打印GC日志方法,在JVM参数里增加参数

‐XX:+PrintGCDetails  
‐XX:+PrintGCTimeStamps  
‐XX:+PrintGCDateStamps  
‐Xloggc:./gc.log 

Tomcat则直接加在JAVA_OPTS变量里。

如何分析GC日志

打印gc日志

启动一个java程序,加入以上参数

java -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:./gc.log -jar application.jar

分析GC日志

下图中是截取的JVM刚启动的一部分GC日志 。
在这里插入图片描述

CommandLine flags: -XX:InitialHeapSize=198572224 -XX:MaxHeapSize=3177155584 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC

我们可以看到图中第一行红框,是项目的配置参数。这里不仅配置了打印GC日志,还有相关的VM内存参数。

2019-09-30T14:57:12.993+0800: 4.615: [Full GC (Metadata GC Threshold) [PSYoungGen: 3104K->0K(200704K)] [ParOldGen: 3407K->6253K(80896K
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值