根据《深入理解java虚拟机》一书所作的笔记和图。
绘图不易,转载请注明出处

引用计数法的缺陷

  • 可能存在循环引用, 例如A = B 和B =A , 实际上已经没有再使用他们这2个了,但是依然不会被认为已死

可达性分析算法:

给定1个GC ROOT对象, 然后判断某个对象能否到达gcRoot这个顶点 ,达不到则认为时可回收。

GC ROOT对象: 虚拟机栈引用的对象、 类静态属性引用

图解java虚拟机之内存分配和垃圾收集_引用计数

方法区的回收

图解java虚拟机之内存分配和垃圾收集_引用计数_02

4种垃圾收集的方法

图解java虚拟机之内存分配和垃圾收集_引用计数_03

垃圾收集的运行流程

图解java虚拟机之内存分配和垃圾收集_java_04

多种垃圾收集器的演变图

图解java虚拟机之内存分配和垃圾收集_java_05

对象在新生代和老生代的之前的转移流程,以及各区直接的关系

图解java虚拟机之内存分配和垃圾收集_方法区_06