首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >垃圾收集的“孤岛”

垃圾收集的“孤岛”
EN

Stack Overflow用户
提问于 2009-04-27 09:33:56
回答 4查看 14.3K关注 0票数 55

有谁能解释一下垃圾收集的孤岛的概念吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-04-27 09:43:34

对象A引用对象B对象B引用对象A,对象A和对象B都不被任何其他对象引用。那是一个孤岛。

基本上,隔离岛是一组相互引用但不被应用程序中的任何活动对象引用的对象。严格地说,即使一个未引用的对象也是一个孤岛。

评论:编辑:

代码语言:javascript
复制
class A {
   B myB; 
} 
class B { 
   A myA; 
} 

/* later */  
A a = new A(); 
B b = new B();  
a.b = b; 
b.a = a;
票数 56
EN

Stack Overflow用户

发布于 2009-04-27 09:36:46

这是这个术语的好解释。节选:

  • “如果一个对象obj1是垃圾收集的,但是另一个对象obj2包含对它的引用,那么obj2也有资格进行垃圾收集”
  • “如果对象obj2可以访问符合垃圾收集条件的对象obj1,那么obj2也有资格进行垃圾收集”

这就是所谓的“孤岛”。“隔离岛”描述一个或多个对象没有从应用程序的活动部分引用它们。

票数 10
EN

Stack Overflow用户

发布于 2009-04-27 11:46:08

要记住的是,只有在直接或间接地从GC根对象(线程、当前局部变量、静态变量等)引用对象时,才会收集对象。如果两个(或更多)对象相互引用,但不是从根引用,那么它们就有资格进行垃圾收集。

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

https://stackoverflow.com/questions/792831

复制
相关文章

相似问题

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