zoukankan      html  css  js  c++  java
  • [jvm] -- 判断对象是否死亡篇

    • 判断对象是否死亡的两种方法

    • 引用计数法

      • 给对象中添加一个引用计数器,每当有一个地方引用它,计数器就加 1;当引用失效,计数器就减 1;任何时候计数器为 0 的对象就是不可能再被使用的。
      • 优点:
        • 简单
      • 缺点:
        • 无法解决相互循环引用
    • 可达性分析算法

      • 基本思想就是通过一系列的称为 “GC Roots” 的对象作为起点,从这些节点开始向下搜索,节点所走过的路径称为引用链,当一个对象到 GC Roots 没有任何引用链相连的话,则证明此对象是不可用的。
    • 不可达的对象并非“非死不可”

      • 出现两次标记,第一次标记处于“缓刑阶段”
    • 如何判断一个常量是废弃常量

      • 假如在常量池中存在字符串 "abc",如果当前没有任何 String 对象引用该字符串常量的话,就说明常量 "abc" 就是废弃常量,如果这时发生内存回收的话而且有必要的话,"abc" 就会被系统清理出常量池。
    • 如何判断一个类是无用的类

      • 该类所有的实例都已经被回收,也就是 Java 堆中不存在该类的任何实例。
      • 加载该类的 ClassLoader 已经被回收。
      • 该类对应的 java.lang.Class 对象没有在任何地方被引用,无法在任何地方通过反射访问该类的方法。
    明明可以靠才华吃饭,非要靠脸~
  • 相关阅读:
    关于数组的算法-编程之美读后感-1
    java学习笔记之线程1
    java学习笔记之IO一()
    java学习笔记之泛型
    java学习笔记之正则表达式
    Thinking in java学习笔记之String的不可变性
    Thinking in java学习笔记之map的应用
    Thinking in java学习笔记之set
    scrapy之中间件
    Linux之Redis-redis哨兵集群详解
  • 原文地址:https://www.cnblogs.com/lycsmzl/p/13213679.html
Copyright © 2011-2022 走看看