JVM GC日志

  1. GC日志解读与分析
    java -XX:+PrintGCDetails demo java -Xloggc:gc.demo.log -XX:+PrintGCDetails -XX:PrintGCDateStamps demp
    上述命令开启GC日志

    java -XX:+UseSerialGC可改为串行GC,YGC和FGC时间差不多,同并行FGC差不多
    java -XX:+UseConcMarkSweepGC可改为CMS GC,ParNew的YGC,主要针对old区,步骤增多,但是STW时间减少
    java8默认启动时开启自适应参数功能,该功能可能导致每次YGC时间不一致,并且影响升级至老年代的阈值(默认15)

JVM线程简单原理

img.png

JVM内部线程分类

img.png

线程堆栈分析工具

jstack -l pid 网站

内存分析与相关工具

img_1.png img_2.png ![img_3.png][analysis5]

内存溢出

img_4.png

  1. 内存泄露 img_5.png
  2. 元数据过多 img_6.png
  3. Unable to create new native thread img_7.png

分析调优

  1. 分配速率:年轻代上新对象的分配
  2. 提升速率:从年轻代晋升对象到老年代

疑难问题分析

  1. 分析工具
  2. 分析步骤 img_7.png

![img_1.png][analysis11]