
1. 目录
1. 目录 ......................................................................................................................................................... 1
2. JVM ....................................................................................................................................................... 19
2.1. 线程 ...................................................................................................................................................... 20
2.2. JVM 内存区域 ..................................................................................................................................... 21
2.2.1.
程序计数器
(
线程私有
) ................................................................................................................ 22
2.2.2.
虚拟机栈
(
线程私有
) .................................................................................................................... 22
2.2.3.
本地方法区
(
线程私有
) ................................................................................................................ 23
2.2.4.
堆(
Heap-
线程共享)
-
运行时数据区
...................................................................................... 23
2.2.5.
方法区
/
永久代(线程共享)
..................................................................................................... 23
2.3. JVM 运行时内存 ................................................................................................................................. 24
2.3.1.
新生代
.......................................................................................................................................... 24
2.3.1.1. Eden 区 .................................................................................................................................................... 24
2.3.1.2. ServivorFrom ........................................................................................................................................... 24
2.3.1.3. ServivorTo .............................................................................................................................................. 24
2.3.1.4. MinorGC 的过程(复制->清空->互换) ....................................................................................... 24
1:eden、servicorFrom 复制到 ServicorTo,年龄+1 ................................................................................... 25
2:清空 eden、servicorFrom ............................................................................................................................. 25
3:ServicorTo 和 ServicorFrom 互换 ................................................................................................................ 25
2.3.2.
老年代
.......................................................................................................................................... 25
2.3.3.
永久代
.......................................................................................................................................... 25
2.3.3.1. JAVA8 与元数据 ................................................................................................................................. 25
2.4. 垃圾回收与算法 .................................................................................................................................. 26
2.4.1.
如何确定垃圾
.............................................................................................................................. 26
2.4.1.1. 引用计数法............................................................................................................................................... 26
2.4.1.2. 可达性分析............................................................................................................................................... 26
2.4.2.
标记清除算法(Mark-Sweep)
.............................................................................................. 27
2.4.3.
复制算法(
copying
)
................................................................................................................. 27
2.4.4.
标记整理算法
(Mark-Compact) .................................................................................................. 28
2.4.5.
分代收集算法
.............................................................................................................................. 29
2.4.5.1. 新生代与复制算法 .............................................................................................................................. 29
2.4.5.2. 老年代与标记复制算法 ...................................................................................................................... 29
2.5. JAVA 四中引用类型 ........................................................................................................................... 30
2.5.1.
强引用
.......................................................................................................................................... 30
2.5.2.
软引用
.......................................................................................................................................... 30
2.5.3.
弱引用
.......................................................................................................................................... 30
2.5.4.
虚引用
.......................................................................................................................................... 30
2.6. GC 分代收集算法 VS 分区收集算法 ................................................................................................ 30
2.6.1.
分代收集算法
.............................................................................................................................. 30
2.6.1.1. 在新生代-复制算法 ............................................................................................................................. 30
2.6.1.2. 在老年代-标记整理算法 ..................................................................................................................... 30
2.6.2.
分区收集算法
.............................................................................................................................. 31
2.7. GC 垃圾收集器 ................................................................................................................................... 31
2.7.1. Serial
垃圾收集器(单线程、复制算法)
................................................................................ 31
2.7.2. ParNew
垃圾收集器(
Serial+
多线程)
................................................................................... 31
2.7.3. Parallel Scavenge
收集器(多线程复制算法、高效)
.......................................................... 32
2.7.4. Serial Old
收集器(单线程标记整理算法
)
........................................................................... 32
2.7.5. Parallel Old
收集器(多线程标记整理算法)
......................................................................... 33
2.7.6. CMS
收集器(多线程标记清除算法)
..................................................................................... 33
2.7.6.1. 初始标记 .............................................................................................................................................. 33
121623125152125125