美文网首页
Java的回收算法

Java的回收算法

作者: bangbang2 | 来源:发表于2020-07-23 09:11 被阅读0次

    参考链接:https://www.imooc.com/article/79492

    回收的都是内存区域,GC回收的是堆区和方法区的内存。Jvm的回收机制是stop-the-world

    除了垃圾回收的线程外,其他线程保持停止,等垃圾回收完再恢复。例如:垃圾不能一边捡一边扔

    标记-****清除算法:比如对象,被引用的对象被引用就+1****,count****为0****就被回收

    复制算法:将原来内存区域分为两块,要清除时,就将一块区域的所有东西移到空白的内存区域,将原来的区域全部清空

    标记整理算法:把有用的对象标记后整理在一块区域,然后将另一端区域的内存清空。相当于前二者的结合

    复制算法>****标记-****整理算法>****标记-****清除算法

    image.png image.png

    Java中采用可达性分析
    gc roots可以是:thread,class
    1.JAVA虚拟机栈中的本地变量引用对象;
    2.方法区中静态变量引用的对象;
    3.方法区中常量引用的对象;
    4.本地方法栈中JNI引用的对象
    因为gc root选择的标准是:不被gc回收,方法区和栈的东西,肯定回收不了,gc root是当前存活的对象

    image.png image.png image.png image.png image.png

    基本意思:标记-清理,标记-整理适用于垃圾少的 copy算法适用垃圾多

    检查是否为垃圾,用可达性分析

    相关文章

      网友评论

          本文标题:Java的回收算法

          本文链接:https://www.haomeiwen.com/subject/nzlclktx.html