Java--垃圾回收算法

2022-08-16  本文已影响0人  李赫尔南

1.引用计数法
  堆中每个对象都有一个引用计数。被引用一次,计数加1.被引用变量值变为null,则计数减1,直到计数为0,则表示变成无用对象。优点是算法简单,缺点是“循环引用的无用对象”无法别识别。
【示例】循环引用示例

public class Student{
    String name;
    Student friend;
    public static void main(String[] args){
        Student s1 = new Student();
        Student s2 = new Student();
        s1.friend = s2;
        s2.friend = s1;
        s1 = null;
        s2 = null;
    }
}

  s1和s2互相引用对方,导致他们引用计数不为0,但是实际已经无用,但无法被识别。

2.引用可达法(根搜索算法)
  程序把所有的引用关系看作一张图,从一个节点GC ROOT开始,寻找对应的引用节点,找到这个节点以后,继续寻找这个节点的引用节点,当所有的引用节点寻找完毕之后,剩余的节点则被认为是没有被引用到的节点,即无用的节点。

上一篇 下一篇

猜你喜欢

热点阅读