956 B
956 B
Java,C#,Lisp使用该算法
通过一系列称为GC Roots的根对象作为起始节点集,从这些节点开始,根据引用关系向下搜索,搜索过程所走过的路径称为引用链(Reference Chain),如果某个对象到GC Roots间没有任何链引用时,图论上从GC Roots到该对象不可达时,证明该对象不可能再被使用
可作为GC Roots的对象
- 方法区中类静态属性引用的对象,如Java类的引用类型静态变量
- 方法区中常量引用的对象,如字符串常量池(String table)引用的对象
- 本地方法栈中JNI(Native方法)引用的对象
- Java虚拟机内部的引用,如基本数据类型对应的Class对象,一些常驻的异常对象(NullPointException,OutOfMemoryError),系统类加载器
- 所有被同步锁(Synchorinzed)持有的对象
- 反映虚拟机内部情况的JMXBean,JAMTI中注册的回调,本地代码缓存等