四、垃圾回收 --- 根搜索法
垃圾回收(GC)
需要做三件事情:
- 哪些内存可以回收?
- 什么时候可以回收?
- 如何回收?
Java 是通过根搜索法判定对象是否存活的。
基本思路:以“GC roots”的对象为起点。从这些节点开始向下搜索,搜索路过的路径成为“引用链”
当GC roots 没有任何引用链相连时,便可回收此对象。
可以作为GC roots 的对象有:
- 虚拟机中的栈引用的对象(即是栈中的本地变量表)
- 方法区中类静态属性引用的对象
- 方法区中常量引用的对象
- 本地方法栈中的Native方法引用的对象