html tool

2020年10月14日星期三

概念-澄清- 垃圾回收机制

 垃圾回收机制

  • https://www.jianshu.com/p/5261a62e4d29

    垃圾回收回收的是无任何引用的对象占据的内存空间而不是对象本身。 换言之,垃圾回收只会负责释放那些对象占有的内存。对象是个抽象的词,包括引用和其占据的内存空间。当对象没有任何引用时其占据的内存空间随即被收回备用,此时对象也就被销毁。但不能说是回收对象,可以理解为一种文字游戏。

    判断是否是垃圾的算法

    -引用计数算法(Reference Counting Collector)[早期使用,现在多废弃,缺点:循环引用无法发现]

    -根搜索算法(Tracing Collector)[当前多数使用,从GC root对象出发,搜索引用链]

    回收算法

    -Tracing算法(Tracing Collector) 或 标记—清除算法[使用根算法, 防止环问题,新问题:效果不高,过多内存碎片]

    -Compacting算法(Compacting Collector) 或 标记—整理算法[先将所有对象移动到一端,清除端界以外内存,解决了标记-清除的问题,新问题: GC停止时间长,更新引用的地址]

    -Copying算法(Copying Collector)[两块内存分别使用,整理时复制存活到另一块中, 解决标记-整理算法的问题, 适合新生代(短周期的对象),问题:内存可用率下降一半]

    -Adaptive算法(Adaptive Collector)[在特定的情况下,一些垃圾收集算法会优于其它算法。基于Adaptive算法的垃圾收集器就是监控当前堆的使用情况,并将选择适当算法的垃圾收集器] [popexizhi: 哈哈,太厉害了,看来要进化到更高级了]

没有评论:

发表评论