JVM 掌握要点
1. 认识Java虚拟机
默认Hotspot实现
2. 类加载机制
知道双亲委派模型
编译为class javac → 装载 class ClassLoader → 执行class 解释/编译 执行
3. 内存模型
内存空间:方法区、堆、JVM方法栈、本地方法栈、PC寄存器
内存分配:堆上分配、TLAB分配、栈上分配
内存状况分析:jconsole、visualvm、jstat、jmap、MAT
Java内存模型 (Java Memory Model)描述了Java程序中各种变量(线程共享变量)的访问规则,以及在JVM中将变量存储到内存和从内存中读取出变量这样的底层细节。
重排序
顺序一致性
volatile
锁
final
4. GC
garbage collection 垃圾回收
算法 Copy Mark-Sweep Mark-Compact
JDK实现 分代回收 新生代可用的GC , Minor GC触发机制及日志格式,旧生代可用的GC,Full GC触发机制及日志格式
GC参数
GI
4.1 回收算法
判断对象死亡算法
引用计数算法
可达性分析算法
垃圾收集算法
标记-清除算法
复制算法
标记-整理算法
分代收集算法
4.2 垃圾收集器
Serial收集器
ParNew收集器
Parallel Scavenger 收集器
Serial Old 收集器
CMS收集器
G1收集器
4.3 GC日志
GC发生时间
垃圾收集的停顿类型
GC发生的区域 与收集器有关
GC前该内存区域已使用容量 GC前java堆已使用容量
GC所占用的时间
5. 调优
6. 工具
jstack
虚拟机统计信息监控工具
jstack是java虚拟机自带的一种堆栈跟踪工具。
jmap
java内存映像工具
jconsole