Java堆中存放着所有的对象实例,垃圾收集器在堆进行回收之前,需要判断对象是“存活”还是“死亡”(即不可能再被任何途径引用的对象)。

  最常见的一种判断对象是否存活算法是引用计数算法

  给对象加一个引用计数器,每当一个地方引用它时,计数器就加1;引用失效时就减1;任何时刻计数器为0的对象就是不可再被使用的。此算法的缺点是无法处理对象之间相互引用的问题。

  主流语言都是通过可达性分析来判定对象是否存活,即可达性分析算法

  其思路是通过一系列称为“GC- root”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC-root都没有任何引用链时,(用图论的话说,GC-root到此对象不可达),说明此对象不可用的,将会被判定为可回收对象。

最新文章

  1. myeclipse 内存不够用报错PermGen space 和 An internal error has occurred.
  2. JavaScript 基础第八天(DOM第二天)
  3. Deep learning:四十二(Denoise Autoencoder简单理解)
  4. jQuery实现购物车多物品数量的加减+总价计算
  5. JS调用水晶报表打印翻页按钮事件
  6. 面向对象的Javascript(4):重载
  7. PHP 页面编码声明与用header或meta实现PHP页面编码的区别
  8. "Principles of Reactive Programming" 之 <Persistent Actor State>学习笔记
  9. Android开发之极光推送基本步骤
  10. dockerfile语法
  11. Managing Spark data handles in R
  12. Android高仿qq及微信底部菜单的几种实现方式
  13. Office 365实现单点登录系列(1)—域环境搭建
  14. angular的时间指令 以及防止闪烁问题
  15. 【HDU - 4341】Gold miner(分组背包)
  16. java List集合
  17. ES6走一波 变量结构赋值
  18. 把linux文件夹压缩成tar.gz的命令
  19. 小程序之map地图上不能在覆盖层
  20. 关于Firedac的一点看法

热门文章

  1. java-IO各个区别
  2. 【Aizu - 0033】Ball (简单搜索)
  3. WebSocket+Netty构建web聊天程序
  4. Django rest framework(3)----节流
  5. springboot自动装配(2)---实现一个自定义自动装配组件
  6. QUIC
  7. 利用Docker搭建Redis集群
  8. KVM :vnc 远程控制kvm创建虚拟机
  9. 【CYH-02】NOIp考砸后虐题赛:转换式:题解
  10. JAVA面试题 StringBuffer和StringBuilder的区别,从源码角度分析?