您好,欢迎来到站长目录(28sn.com)!


在垃圾回收器中有哪几种判断是否需要被回收的几种方法

来源:网络整理 浏览:194次 时间:2020-07-14

垃圾回收器在回收垃圾之前第一件事就是判断哪些是可以被回收的对象,如何判断呢?我们可以根据该对象是否还有引用指向它来进行判断,如果有则不能回收,如果没有则可以回收,具体有以下几种算法:

  1. 引用计数算法:
    给对象添加一个引用计数器,每当它被引用一次计数器就加一,当该引用失效时就减一,如果计数器的值为0就表示它要被垃圾收集器作为垃圾收集了。这种算法存在一个问题,就是如果对象之间互相循环引用,他们就不可能被垃圾回收。
    举个栗子:
    public class RefrenceCounting {
    public Object instance = null;
    }
    public class TestGc {
    public static void main(String[] args) {
    RefrenceCounting rf1 = new RefrenceCounting();
    RefrenceCounting rf2 = new RefrenceCounting();
    rf1.instance = rf2;
    rf2.instance = rf1;
    rf1 = null;
    rf2 = null;
    System.gc();
    }
    }

从图中可以看到,rf1和rf2互相引用,即使rf1和rf2置空,从外界无法访问他们,但是他们的引用计数器不为空,垃圾收集器无法回收他们。

  1. 可达性分析算法:
    通过一系列称为“GC Roots”的对象作为起点,从这些节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到Gc roots没有任何引用链相连时则此对象是不可用的。

上图中obj1,obj2,obj3都有引用指向Gc Roots,obj4和obj5没有指向Gc Roots的引用,所以他们会作为垃圾回收器的对象。可达性分析算法是java中使用的算法。
可以作为Gc Roots的对象包括以下几种:
1) 虚拟机栈(栈帧中的本地变量表)中引用的对象
2) 方法区中类静态属性引用的对象
3) 方法区中常量引用的对象
4) 本地方法栈中引用的对象

引用计数算法和可达性分析算法都和引用有关,在jdk1.2以后引用被分为四种:

  1. 强引用:
    强引用就是例如 ObjectA a = new ObjectA(),这样的引用,存在这种引用的对象不会被垃圾回收器回收。
    2:软引用:
    软引用是指一些引用还有用但并非必须,被软引用的对象会在内存被占满,即将发生内存溢出异常之前进行回收。
    3:弱引用:被弱引用的对象只能生存到下一次垃圾回收发生之前,当下一次垃圾回收时,无论内存是否被占满都会回收弱引用的对象。
    4:虚引用,被虚引用的对象和没有被引用的对象一样都会被垃圾回收器回收,不同的是,它在被回收时会收到一个系统通知。

推荐站点

  • 我爱发烧音乐我爱发烧音乐

    我爱发烧音乐囊括了从流行音乐到古典音乐多个类型的音乐作品,专栏推荐最新的音乐,提供音乐排名榜单!可供免费线上收听音乐,歌曲流畅,音效极佳! 网站提供的钢琴以及二胡专栏,可供收听者,陶冶情操,改善心情,是难得的轻音乐典藏!

    www.520fs.com
  • 世纪音乐网世纪音乐网

    世纪音乐网是专业的在线音乐试听MP3下载网站。歌曲总计30余万首,收录了网上最新歌曲和流行音乐,DJ舞曲,非主流音乐,经典老歌,劲舞团歌曲,搞笑歌曲,儿童歌曲,英文歌曲等。是您上网听歌的最佳网站。

    www.ssjj.com
  • 怒江大峡谷网怒江大峡谷网

    怒江大峡谷网内容包括:新闻、要闻、怒江报、视频、文化、民俗、人文、音乐、政务、公告、政策等地方信息。

    www.nujiang.cn
  • 杭州网杭州网

      杭州网是杭州地区唯一的新闻门户网站,由中共杭州市委宣传部、杭州日报报业集团和杭州广播电视集团共同组建的杭州网络传媒有限公司运营。

    www.hangzhou.com.cn
  • 深圳在线深圳在线

      深圳在线 www.szol.net是深圳本地最大、最早的地方生活资讯网站之一,网站名“深圳在线www.szol.net”由南方报业传媒集团编辑委员会总编辑、南方日报社总编辑、南方都市报总编辑、南方书画院名誉院长王春芙亲笔题名,深圳在线www.szol.net团队与深圳热线www.szonline.net、奥一网www.oeeee.com都源于全国最早成立于1996年的知名网络公司——深圳万用网。

    www.szol.net

鄂公网安备 42062502000001号