050、JVM实战总结:动手实验:使用 jstat 摸清线上系统的JVM运行状况

jstat详细信息,参考:jstat - Java Virtual Machine Statistics Monitoring Tool 
 

1、前文回顾

    对象优先在Eden区分配,Young GC的触发时机和执行过程,对象进入老年代的时机,Full GC的触发时机和执行过程

2、功能强大的jstat

    可以看到JVM各个区内存使用情况,GC执行次数及耗时,从而可以判断内存使用压力、GC压力、内存分配是否合理

3、jstat -gc PID

 

jps // 查看java进程的PID

jstat -gc PID

S0C

S1C

S0U

S1U

EC

EU

OC

OU

MC

MU

YGC

YGCT

FGC

FGCT

GCT

From区大小

To区大小

From区已使用

To区

已使用

Eden区的大小

Eden区已使用

老年代的大小

老年代已使用

方法区大小

方法区已使用

Young GC次数

Young GC的耗时

Full GC次数

Full GC的耗时

所有GC的总耗时

 

4、其他的jstat命令

    参考:jstat命令详解

5、到底该如何使用jstat工具?

分析线上的JVM进程,最想要知道的信息有哪些?如下表

 

对象增长的速率

触发频率

耗时

Young GC后

存活

进入老年代对象

新生代

 

 

 

 

 

老年代

 

 

 

-----------------

-----------------

结合之前的JVM GC优化的方法,合理分配内存。

总体原则:短命对象在新生代被回收,避免进入老年代。长期存活对象早点进入老年代,不要复制来复制去

 

6、新生代对象增长的速率

对jvm第一个要了解的事:每秒钟会在年轻代的Eden区分配多少对象jstat -gc PID 1000 10

关注高峰期和非高峰期的增长速率。高峰期可以使用jstat -gc PID 1000 10非高峰期可以使用:jstat -gc PID 60000 10

7、Young GC的触发频率和每次耗时

    对象增长速率知道了,GC的频率其实可以推算出来。

    触发频率 = Eden区大小 / 新生代对象增长速率

    每次的耗时 = YGCT / YGC

8、每次Young GC后有多少对象是存活和进入老年代

    需要推算:每次Young GC后多少对象存活、多少进入老年代。

    使用命令:

jstat -gc PID 触发频率 10

    观察发生了一次Young GC,此时Eden、Survivor、老年代的对象变化。

    Young GC后的Eden区存活 = S区增长 + 老年代的增长,关键观察老年代的对象增长速率。

    一般的系统正常情况下,没有那么多存活的对象,即老年代的对象是不太可能不停的快速增长的。

    老年代每次都增加几十M情况:

1、存活对象太多触发了动态年龄判断

2、存活对象太多触发了S区放不下

    Young GC后的堆存活 = S区存活 + 老年代存活

    

9、Full GC的触发时机和耗时

    Old GC触发频率 = 老年空间/老年代的增长 * YoungGC触发频率

 

本文是《从 0 开始带你成为JVM实战高手》内容总结,版权问题,特此声明。详细内容:

 

 

 

 

如果购买,成功后加QQ群找群主返现10元

为什么要学JVM1、一切JAVA代码都运行在JVM之上,只有深入理解虚拟机才能写出更强大的代码,解决更深层次的问题。2、JVM是迈向高级工程师、架构师的必备技能,也是高薪、高职位的不二选择。3、同时,JVM又是各大软件公司笔试、面试的重中之重,据统计,头部的30家互利网公司,均将JVM作为笔试面试的内容之一。4、JVM内容庞大、并且复杂难学,通过视频学习是最快速的学习手段。课程介绍本课程包含11个大章节,总计102课时,无论是笔试、面试,还是日常工作,可以让您游刃有余。第1章 基础入门,从JVM是什么开始讲起,理解JDK、JRE、JVM的关系,java的编译流程和执行流程,让您轻松入门。第2章 字节码文件,深入剖析字节码文件的全部组成结构,以及javap和jbe可视化反解析工具的使用。第3章 类的加载、解释、编译,本章节带你深入理解类加载器的分类、范围、双亲委托策略,自己手写类加载器,理解字节码解释器、即时编译器、混合模式、热点代码检测、分层编译等核心知识。第4章 内存模型,本章节涵盖JVM内存模型的全部内容,程序计数器、虚拟机栈、本地方法栈、方法区、永久代、元空间等全部内容。第5章 对象模型,本章节带你深入理解对象的创建过程、内存分配的方法、让你不再稀里糊涂。第6章 GC基础,本章节是垃圾回收的入门章节,带你了解GC回收的标准是什么,什么是可达性分析、安全点、安全区,四种引用类型的使用和区别等等。第7章 GC算法与收集器,本章节是垃圾回收的重点,掌握各种垃圾回收算法,分代收集策略,7种垃圾回收器的原理和使用,垃圾回收器的组合及分代收集等。第8章 GC日志详解,各种垃圾回收器的日志都是不同的,怎么样读懂各种垃圾回收日志就是本章节的内容。第9章 性能监控与故障排除,本章节实战学习jcmd、jmx、jconsul、jvisualvm、JMC、jps、jstatd、jmap、jstack、jinfo、jprofile、jhat总计12种性能监控和故障排查工具的使用。第10章 阿里巴巴Arthas在线诊断工具,这是一个特别小惊喜,教您怎样使用当前最火热的arthas调优工具,在线诊断各种JVM问题。第11章 故障排除,本章会使用实际案例讲解单点故障、高并发和垃圾回收导致的CPU过高的问题,怎样排查和解决它们。课程资料课程附带配套项目源码2个159页高清PDF理论篇课件1份89页高清PDF实战篇课件1份Unsafe源码PDF课件1份class_stats字段说明PDF文件1份jcmd Thread.print解析说明文件1份JProfiler内存工具说明文件1份字节码可视化解析工具1份GC日志可视化工具1份命令行工具cmder 1份学习方法理论篇部分推荐每天学习2课时,可以在公交地铁上用手机进行学习。实战篇部分推荐对照视频,使用配套源码,一边练习一遍学习。课程内容较多,不要一次性学太多,而是要循序渐进,坚持学习。      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java硕哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值