3、JVM 核心技术--调优分析与面试经验
1. GC日志解读与分析
2. JVM 线程堆栈数据分析
VM 线程:单例的VMThread对象,负责执行VM操作
定时任务线程:单例的WatcherThread 对象,模拟在VM中执行定时操作的计时器中断
GC 线程:垃圾收集器中,用于支持并行和并发垃圾回收的线程
编译器线程:将字节码编译未本地机器代码
信号分发线程:等待进程指示的信号,并将其分配给java级别的信号处理方法
安全点
方法代码中被植入的安全点检测入口
线程处于安全点状态:线程暂停执行,这个时候线程栈不再发生改变
JVM的安全点状态:所有线程都处于安全点状态。
JVM支持多种方式来进行线程转储
JDK工具,包括:jstack工具,jcmd工具,jconsole,jvisualvm,java mission control 等
shell 命令或者系统控制台,比如Linux的kill -3, windows的ctrl + break
jmx技术,主要是使用threadmx
fastthread.io 网站帮助测试 多线程的死锁请库。
内存分析与相关工具
一个java对象占用多少内存?
可以使用 Instrumentation.getObjectSize() ,方法来估算一个对象占用的内存空间。
JOL(Java object layout)可以用来查看对象内存布局
JVM 问题分析调优经验
GC 疑难情况问题分析
JVM 常见面试问题汇总
总结回顾与作业实践