美文网首页
Java对象回收

Java对象回收

作者: gstsyyb | 来源:发表于2020-05-28 23:13 被阅读0次

    对象分配流程:
    1、class 加载,数据存放在元空间(已经移除的 JVM 内存之外,原因是大小不好调优,永久代触发 FullGC,所以移除了)
    2、方法执行在栈上,引用存储在栈上
    3、对象在堆分配,栈上引用
    对象回收流程:
    1、多数情况下,无 GCROOT 对象直接被回收。
    2、少数对象即使没有GCROOT时,也不一定回收
    ①、实现finalize方法,延迟回收,对象可能被finalize方法执行时重新引用
    ②、非强引用也可能暂时不回收

    image.png

    说明:对象分配在堆上,GCRoot 在栈上或方法区等

    一、通过 finalize 方法标识一种特殊处理的对象,回收时优先加入队列,延长回收,通过finalize方法可以让对象重新复活,否则则直接回收

    image.png

    二、软引用、弱引用、虚引用
    即使对象没有被 GCRoot 引用,如果对象标识为非强引用,则暂时不用回收

    image.png

    相关文章

      网友评论

          本文标题:Java对象回收

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