出于某种原因,我发现的所有例子主要与有关Java,尽管理论上这个问题可能与任何语言相关。所有示例通常都归结为以数组缓冲区的形式实现某些集合(堆栈?)。如果我们将某个对象的引用写入数组的第 N 个元素,然后不再需要这个元素,但我们不将数组的大小更改为较小的大小或者不写入该元素null(如这些示例所示),则数组的这个元素将继续引用该对象,并且该对象将无法被收集GC(由垃圾收集器)。为此,他们创造了一个完整的术语loitering object,即“一个闲置着什么也不做的物体”。我们不再需要该对象,但垃圾收集器无法收集它。
出于某种原因,我发现的所有例子主要与有关
Java
,尽管理论上这个问题可能与任何语言相关。所有示例通常都归结为以数组缓冲区的形式实现某些集合(堆栈?)。如果我们将某个对象的引用写入数组的第 N 个元素,然后不再需要这个元素,但我们不将数组的大小更改为较小的大小或者不写入该元素null
(如这些示例所示),则数组的这个元素将继续引用该对象,并且该对象将无法被收集GC
(由垃圾收集器)。为此,他们创造了一个完整的术语loitering object
,即“一个闲置着什么也不做的物体”。我们不再需要该对象,但垃圾收集器无法收集它。在我看来,这就是典型的“内存泄漏”的表现形式之一。但这个词听起来不错,我还能说什么呢。显然,作者使用它“是为了成为一个流行语”。