算法(第4版) 9.4分
读书笔记 1.3.2.4 对象游离
钟小强

public String pop(){ String item = a[--N]; // Remove item from top of stack. a[N] = null; // Avoid loitering (see text). if (N > 0 && N == a.length/4){ resize(a.length/2); } return item; } Java的垃圾收集策略是回收所有无法被访问的对象的内存。在我们对pop()的实现中,被弹出的元素的引用仍然存在于数组中。这个元素实际上已经是一个孤儿了——它永远也不会再被访问了,但Java的垃圾收集器没法知道这一点,除非该引用被覆盖。即使用例已经不再需要这个元素了,数组中的引用仍然可以让它继续存在。这种情况(保存一个不需要的对象的引用)称为游离(loitering)。在这里,避免对象游离很容易,只需将被弹出的数组元素的值设为null即可,这将覆盖无用的引用并使系统可以在用例使用完被弹出的元素后回收它的内存。

0
《算法(第4版)》的全部笔记 21篇
豆瓣
我们的精神角落
免费下载 iOS / Android 版客户端