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

use*_*434 21 java garbage-collection reference

我正在阅读Effective Java,我遇到了这个术语,"过时参考".什么时候是参考过时的参考?我假设所有不超出范围且仍未使用的对象都是过时的引用.如果我错了,请纠正我.

Mic*_*rdt 11

一个过时的引用(在本书中使用,虽然它不是一个广泛使用的技术术语)是一个保留但永远不会被使用的引用,防止它引用的对象有资格进行垃圾收集,从而导致内存泄漏.


sgo*_*les 5

过时的引用只是一个引用,以后将不再对其取消引用。

来自Effective Java

保留constitutes memory leaksJava中过时的引用。这也称为意外对象保留。

删除一个引用以删除对一个对象的过时引用是好的,但是一定不要过度引用它。消除过时引用的最佳方法是重用包含该变量的变量或使其超出范围。

例如,删除过时的参考,

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