2014-03-28 16 views

回答

2

不可以通过将您的收集对象置零来创建内存泄漏。顺便说一句,上面的代码的一部分是毫无意义的:如果您将set设置为null,则之后对它进行null测试是一个null-op。如果将set设置为null,

+0

这并不反映代码的完整图片。我只是想确定它可以设置为空,所以后面的集合将被重新分配给另一个集合对象。 – ling

+0

不是空操作。代码应该运行。 – Thom

+0

@TheThom:它可能不会。一些complilers/jvms会优化它。但即使他们不这样做,它仍然是毫无意义的代码。本质上是测试分配工作。 – CPerkins

4

你不废掉一个对象 - 你改变一个变量的价值null。理解对象,变量和引用之间的差异是非常重要的。

这很少有用,但它本身会导致变量泄漏,这是非常奇怪的。我不能立即想到会发生什么 - 除非你有一些无效检查,当然这会改变你对其他数据的行为。它可能使前面的变量值引用的集合符合垃圾回收的条件,或者它可能不会 - 它取决于是否还有其他东西仍然引用它。

+0

是不是等同于使被空值的变量引用的对象无效? – ling

+1

@马丁:恐怕我甚至不知道如何解析你的问题。但“对象无效”根本不是一个有意义的术语。将变量的值更改为变量值用于引用的对象。 –

相关问题