如何确定一个堆中的对象是否死去?

两个思路:

  1、引用计数法

    给每个对象添加一个引用,用来统计指向该对象的引用计数。有引用时就加1,引用失效时就减1。任何时候引用计数为0,该对象就死亡了。可以被当做垃圾处理。但引用计数法有个难以解决的问题:循环引用。

  2、可达性分析算法

    通过一系列的被称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到GC Roots没有任何引用链时,则证明此对象不可用,会被判定为可回收的对象。

    可达性分析算法可以解决引用计数法中的循环引用问题。

什么是GC Roots?

  GC Roots是一些由堆外指向堆内的引用。

  作为GC Roots的对象包括以下几种:

  1、虚拟机栈(帧栈中的本地变量表)中引用的对象。

  2、方法区中类静态属性引用的对象。

  3、方法区中常量引用的对象。

  4、本地方法栈中JNI(Native方法)引用的对象。

最新文章

  1. smarty中增加类似foreach的功能自动加载数据方法
  2. 苹果手机制作gif图片
  3. <转载>编程珠玑-位排序(bitsort)
  4. 关于UPdate用法的
  5. 转帖:深入理解JavaScript系列
  6. Mesos架构简介
  7. MVC使用jQuery从视图向控制器传递Model,数据验证,MVC HTML辅助方法小结
  8. vue Echarts 柱状图点击事件
  9. Android回调事件传播-android学习之旅(四十五)
  10. python icmp\dns\http监控网络各个节点状态,并记录日志
  11. vue中部分api解释 ($nextTick)
  12. Minesweeper
  13. python(9): GUI
  14. [转]安卓手机google商店的账号切换退出方式
  15. 使用SQL逆向生成PDM文件
  16. Linux服务器---流量监控bandwidthd
  17. ssh rsa 非对称加密 基本原理
  18. SDN交换机迁移2
  19. 单片机裸机下写一个自己的shell调试器(转)
  20. mybatis-config.xml配置

热门文章

  1. mysql在linux下连接超慢的问题及解决办法
  2. springMVC4+spring4+hibernate4框架搭建
  3. Mysql-5.7 x64安装
  4. Python学习之==>函数
  5. SAP屏幕事件的控制
  6. spring boot + mybatis 连接 oracle 出现 ORA-00923: 未找到要求的 FROM 关键字 错误
  7. centos7配置NTP时间服务器
  8. 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用)
  9. 【Qt开发】V4L2 API详解 背景知识 打开设备设置参数
  10. 右击main 方法运行正常,启动tomcat 后,spring boot 项目 出现参数字符串是乱码的情况