假设我有一段Java代码,它会不断运行,并且每分钟都应该获取一个非常庞大的对象数组并处理它们。以下代码可以完成此任务:
while (true) {
ArrayList<HeavyObject> objArr = this.getHeavyObject();
drv.processObject(objArr);
try {
Thread.sleep(60000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
当执行ArrayList<HeavyObject> objArr = this.getHeavyObject();
并在获取新的批量重对象之前没有给objArr = null
赋值时,这段代码是否会导致内存泄漏?
根据《Java中的内存泄漏》文章,如果我不离开变量范围(此代码是main()
的一部分,并且在退出程序之前一直存在),使用将变量赋值为null
非常重要。
您能否澄清上述代码的这个方面?
array[N] = null;
,内存将会泄漏。为什么在我的代码中它没问题,但在他的例子中会出现问题?这是因为pop()
只返回元素,而不对数组和其元素进行任何操作和赋值吗? - Mikearray[N] = null;
。区别在于他没有任何新值(直到有人调用push
),这就是为什么他的代码赋值为null
的原因。 - Klas Lindbäck