Java中过时的引用是什么意思?

2022-09-01 21:14:11

我正在阅读有效的Java,我遇到了这个术语,“过时的参考”。引用何时过时引用?我假设所有不超出范围并保持未使用的对象都是过时的引用。如果我错了,请纠正我。


答案 1

过时的引用(如本书中使用的,尽管它不是一个广泛使用的技术术语)是一个保留但永远不会被使用的引用,防止它所引用的对象符合垃圾回收的条件,从而导致内存泄漏。


答案 2

过时的引用只是一个永远不会再被取消引用的引用。

有效的Java

在 Java 中保留过时的引用。这也称为无意对象保留。constitutes memory leaks

将引用清空以删除对对象的过时引用是件好事,但不能过度使用。消除过时引用的最佳方法是重用包含它的变量,或者让它超出范围。

例如,用于删除过时的引用,

public Object pop() {
    if (size == 0)
        throw new EmptyStackException();
    Object result = elements[--size];
    elements[size] = null; // Eliminate obsolete reference
    return result;
}