zoukankan      html  css  js  c++  java
  • Java对象已死吗 深入理解Java虚拟机笔记

    1、引用计数器法
    给每个对象设置一个计数器,每当有一个引用就给计数器的值+1,引用时小时就减一,当计数器值为0是就可以回收掉了。
    主流虚拟机都没有使用这种算法,循环依赖问题
    2、可达性分析:
    思路是通过一些列的“GC ROOTS”对象作为起始点,从这些对象往下搜索,搜索所走过的路线称为引用链,当一个对象到GC ROOTS没有任何引用链的时候,就说这个对象不可用

    再谈引用:
    1、强引用:代码之间普遍存在 ,垃圾收集器永远不会回收掉的对象
    2、软引用:是指一些有用非必须的对象,在系统即将发生内存溢出异常之前,将会把这些对象列进回收范围进行第二次回收
    3、弱引用:强度比软引用低,智能生存到下一次GC
    4、虚引用:唯一的目的是在这个对象被收集器会收拾收到一个系统通知,有什么实例吗?

    4、生存还是死亡
    即使可达性分析不可达的对象,也并不是非死不可,要宣告一个对象死亡,至少要经历两次标记过程;如果对象不可达,那他将被第一次标记,
    并且进行一次筛选,筛选的条件是此对象否有有必要执行finalize()方法,当对象没有覆盖此方法或者该方法已经被虚拟机调用过,则被视为没有必要执行
    有过有必要,则会放到一个F-QUEUE中,有一个低优先级的Finalizer县城区执行它,但并不会等该方法运行结束,finalize()是对象逃脱死亡的最后一次机会,使用this引用赋值,可以存活

  • 相关阅读:
    ios 开发日记 15
    ios开发日记
    ios 开发日记 13-剖析网易新闻标签栏视图切换(addChildViewController属性介绍)
    ios开发日记-12 sdwebImage内存泄露
    ios 开发日记 9
    ios开发日记11 对tableView三种计算动态行高方法的分析
    ios开发日记 10- CGPathAddArc和CGPathAddArcToPoint函数
    ios开发日记10
    关于appStore不显示构建版本的问题
    UITextField/UITextView限制字数
  • 原文地址:https://www.cnblogs.com/masterZ/p/15185641.html
Copyright © 2011-2022 走看看