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引用赋值,可以存活

  • 相关阅读:
    Some bugs in CE6
    WINCE知识点滴
    多个设备共享同一个硬件中断
    磁盘分区详解
    开发串口驱动程序
    CE BSP开发入门之重要的配置文件
    boost pcre Greta RE2 正则表达式性能测试
    Python GIL
    Oracle Instant Client 安装
    C++ 与 python 整数除法差异
  • 原文地址:https://www.cnblogs.com/masterZ/p/15185641.html
Copyright © 2011-2022 走看看