JVM GC、线程堆栈和内存分析
JVM GC日志
- 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线程简单原理
JVM内部线程分类
线程堆栈分析工具
jstack -l pid
网站
内存分析与相关工具
![img_3.png][analysis5]
内存溢出
- 内存泄露
- 元数据过多
- Unable to create new native thread
分析调优
- 分配速率:年轻代上新对象的分配
- 提升速率:从年轻代晋升对象到老年代
疑难问题分析
- 分析工具
- 分析步骤
![img_1.png][analysis11]