美文网首页
GC回收机制

GC回收机制

作者: e56e2551219d | 来源:发表于2020-03-30 17:59 被阅读0次

    线程私有数据不需要考虑,会随着线程结束而结束,垃圾收集器关注的是堆和方法区中动态创建对象

    1、可达性分析

    通过一组GC Root为起点向下探索,探索的路径为引用连,最终根据引用连是否可达判断是否可以被回收

    GC Root对象 

    1.1 虚拟机栈局部变量表中引用的对象

    1.2 方法区中静态引用指向的对象

    1.3 仍处于存活状态中的线程对象

    1.4 Native方法中JNI引用的对象

    2、什么时候会回收

    2.1 Allocation Failure 堆内存分配时剩余空间不足

    2.2 System.gc(); 会出发垃圾回收

    3、如何回收垃圾

    各个厂商回收算法不同

    遍历标记算法 、复制算法、复制压缩算法各有优缺点 

    从GC Root集合开始遍历一次 未引用的对象会被回收

    过程分为标记阶段和清除阶段

    4、JVM分代回收策略

    新生代、老生代(HotSpot 还有永久代)

    新创建的对象在新生代,新生代多次回收仍然存活就会被分到老年代

    5、引用

    由强到弱分为 强引用 (new Obj())、软引用(SoftReference<Obj>)、弱引用<WeakReference<Obj>>、虚引用(用不到)

    android项目中用到图片(Bitmap)处理时会用到软引用

    软引用自身是强引用 引用的对象是软引用

    相关文章

      网友评论

          本文标题:GC回收机制

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