栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

垃圾收集-孤立的LinkedList链接

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

垃圾收集-孤立的LinkedList链接

看起来确实有些奇怪。可能是因为它明确地拆除了列表,是为了清除现有迭代器和子列表以及父列表的列表。

当然,不能加快垃圾收集的速度。垃圾收集器不会遍历不可访问对象中的引用,因此将其为null不会有任何区别。

更新

该方法的更新版本具有以下注释:

// Clearing all of the links between nodes is "unnecessary", but:// - helps a generational GC if the discarded nodes inhabit//   more than one generation// - is sure to free memory even if there is a reachable Iterator

因此,看来GC至少在某些情况下是有好处的。

假设

Node
年龄较大的a 中包含对年龄较小的对象(例如a
Node
或元素)的引用。当收集年轻一代时,该引用成为“根”,即使年轻一代
Node
无法访问,也导致保留了年轻一代对象。这种状态一直持续到收集到较老的一代为止。老一辈人很少被收集。

如果遍历列表并将其拆除,则包含旧->新引用的变量将分配给

null
。该分配的写屏障导致(立即或在GC时)原始引用不再是“根”。这样,现在就可以收集年轻一代中的对象了,并且它最终不会“持久化”到老一代中(这带来了需要收集该一代的时间)。

据推测,GC的收益要比取消选择清单的成本要高得多……无论是在平均水平上还是在成本不菲的情况下。

有关更多信息,请参阅Jones和Lins的“用于动态内存管理的垃圾收集算法”。这是我(第一版)副本中的第7.5章。


一般而言,将

Collection
对象扔掉并重新开始比清除对象再使用更好。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/507364.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号