首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >垃圾收集如何识别孤立对象?

垃圾收集如何识别孤立对象?
EN

Stack Overflow用户
提问于 2020-03-30 12:01:48
回答 1查看 258关注 0票数 2

给定这样的内存状态:

代码语言:javascript
复制
(1) GC root -> A
(2) GC root -> B
(3) B -> GC root

其中"->“的意思是”有一个引用“。现在假设从GC root中移除对AB的引用。我知道A将被垃圾收集,因为它已经无法到达。

但是B呢?它无法从GC root访问,但它引用了GC root,该GC root仍然是活动的。B现在是垃圾收集还是不垃圾?或者换句话说:为了查找孤立对象,分析是从GC根到其他对象的一个方向吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-30 12:13:14

用于垃圾收集的基本策略是确定堆上的数据是否可以从堆栈中访问。如果不是,就释放它的记忆。

你可以想象这一切

代码语言:javascript
复制
STACK  *** HEAP *** HEAP *** STACK
GC root.  -> A      -> b   -> GC root

因此,如果删除A,仍然有B到达堆栈,但垃圾收集器永远不会到达B并删除它(它只遍历从左到右/从堆栈到堆)。可以从示例B ->根GC中的堆到达堆栈并不重要。只有堆数据不能从堆栈中到达。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60930083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档