JVM GC Roots
2024-09-06 09:18:39
如何确定一个堆中的对象是否死去?
两个思路:
1、引用计数法
给每个对象添加一个引用,用来统计指向该对象的引用计数。有引用时就加1,引用失效时就减1。任何时候引用计数为0,该对象就死亡了。可以被当做垃圾处理。但引用计数法有个难以解决的问题:循环引用。
2、可达性分析算法
通过一系列的被称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到GC Roots没有任何引用链时,则证明此对象不可用,会被判定为可回收的对象。
可达性分析算法可以解决引用计数法中的循环引用问题。
什么是GC Roots?
GC Roots是一些由堆外指向堆内的引用。
作为GC Roots的对象包括以下几种:
1、虚拟机栈(帧栈中的本地变量表)中引用的对象。
2、方法区中类静态属性引用的对象。
3、方法区中常量引用的对象。
4、本地方法栈中JNI(Native方法)引用的对象。
最新文章
- smarty中增加类似foreach的功能自动加载数据方法
- 苹果手机制作gif图片
- <;转载>;编程珠玑-位排序(bitsort)
- 关于UPdate用法的
- 转帖:深入理解JavaScript系列
- Mesos架构简介
- MVC使用jQuery从视图向控制器传递Model,数据验证,MVC HTML辅助方法小结
- vue Echarts 柱状图点击事件
- Android回调事件传播-android学习之旅(四十五)
- python icmp\dns\http监控网络各个节点状态,并记录日志
- vue中部分api解释 ($nextTick)
- Minesweeper
- python(9): GUI
- [转]安卓手机google商店的账号切换退出方式
- 使用SQL逆向生成PDM文件
- Linux服务器---流量监控bandwidthd
- ssh rsa 非对称加密 基本原理
- SDN交换机迁移2
- 单片机裸机下写一个自己的shell调试器(转)
- mybatis-config.xml配置
热门文章
- mysql在linux下连接超慢的问题及解决办法
- springMVC4+spring4+hibernate4框架搭建
- Mysql-5.7 x64安装
- Python学习之==>;函数
- SAP屏幕事件的控制
- spring boot + mybatis 连接 oracle 出现 ORA-00923: 未找到要求的 FROM 关键字 错误
- centos7配置NTP时间服务器
- 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用)
- 【Qt开发】V4L2 API详解 背景知识 打开设备设置参数
- 右击main 方法运行正常,启动tomcat 后,spring boot 项目 出现参数字符串是乱码的情况