首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
大数据
›
数据仓库与分析
›
JVM口试题解,垃圾接纳之“对象存活判断”分析 ...
返回列表
发新帖
JVM口试题解,垃圾接纳之“对象存活判断”分析
[复制链接]
发表于 2025-11-5 10:20:54
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
一、JVM怎么判断一个类/对象是不是垃圾?
先来说怎样判断一个对象是不是垃圾
最常用的就是
引用计数法
和
可达性分析
引用计数法
引用计数法为每个对象维护一个计数器来跟踪有多少个引用指向该对象。每当创建一个新的引用指向某个对象时,计数器加1;每当一个引用失效或被移除时,计数器减1。当计数器降为0时,表现没有其他对象引用它,因此可以
安全
地将其接纳。
引用计数法有个非常大的题目就是循环引用。
循环引用:如果两个或多个对象相互引用形成环状结构,纵然这些对象不再被外部利用,它们的引用计数也不会降为0,从而导致内存走漏。比方,A持有B的引用,B也持有A的引用,但没有任何其他对象引用A或B,这时它们应该被接纳,但由于相互引用,它们的引用计数都不会降为0。
那么如果接纳了引用计数法,怎样办理循环引用呢? 引入弱引用来突破循环引用链。弱引用不会增长对象的引用计数,因此当一个对象仅通过弱引用保持时,它可以被垃圾接纳器接纳。
可达性分析
可达性分析就是用来判断对象是否存活的。
这个算法的根本思绪就是通过一系列的称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到 GC Roots 没有任何引用链相连时,则证明此对象是不可用的。
二、说到GC ROOTS,你知道Java中哪些对象可作为GC ROOTS吗?
作为 GC Roots 的对象包罗下面几种(重点是前面 4 种):
假造机栈(栈帧中的当地变量表)中引用的对象;各个线程调用方法堆栈中使
回复
使用道具
举报
返回列表
浏览过的版块
物联网
DevOps与敏捷开发
分布式数据库
Java
Oracle
主机安全
IOS
SQL-Server
运维.售后
南飓风
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表