一、JVM探究
1.1前言
1.2内容分派
二、 JVM位置
三、JVM体系结构
3.1 jvm结构图
3.2 jvm垃圾回收
3.3 jvm调优
四、类加载器
4.1类加载的过程
4.2哪些类加载器
4.3双亲委派机制
五、 沙箱安全机制
六、native、方法区
6.1native
6.2PC寄存器
6.3方法区
七、栈(后进先出)
7.1栈的作用
7.2栈存储的东西
7.3 栈运行原理
7.3.1简单结构图
7.3.2详细结构图
7.3.3栈+堆+方法区的交互关系
八、堆
8.1三种JVM
8.2. 堆
8.3新生区
新生区又叫做伊甸园区,包括:伊甸园区、幸存0区、幸存1区。
8.4永久区
8.5永久代和元空间
什么是永久代和元空间??
方法区是一种规范,不同的虚拟机厂商可以基于规范做出不同的实现,永久代和元空间就是出于不同jdk版本的实现。
方法区就像是一个接口,永久代与元空间分别是两个不同的实现类。
只不过永久代是这个接口最初的实现类,后来这个接口一直进行变更,直到最后彻底废弃这个实现类,由新实现类—元空间进行替代。
jdk1.8之前:
jdk1.8以及之后:在堆内存中,逻辑上存在,物理上不存在(元空间使用的是本地内存)
九、使用JProfiler工具分析OOM原因
十、GC垃圾回收
10.1垃圾回收的区域
10.2GC之引用计数法
10.3GC之复制算法
使用场景
10.4 GC之标记清除压缩算法
10.4.1 标记清除
10.4.2标记清除压缩
标记清除压缩(改进)
10.4.3 标记清除压缩(改进)
十一、JMM是什么
11.1JMM是什么
11.2 JMM的作用
11.3JMM的操作
11.4并发编程的三大特性
1. 原子性
一个或多个程序指令,要么全部正确执行完毕不能被打断,或者全部不执行
2. 可见性
当一个线程修改了某个共享变量的值,其它线程应当能够立即看到修改后的值。
3. 有序性
程序执行代码指令的顺序应当保证按照程序指定的顺序执行,即便是编译优化,也应当保证程序源语一致。