對於下面的代碼段:我是否理解正確的內存泄露Java中
Vector v = new Vector(10);
for (int i = 1; i<100; i++)
{Object o = new Object();
v.add(o);
o = null;
}
有,因爲所有的100個對象的引用都被設置爲null,因此,他們將通過GC收集不會泄漏。
然而,
Vector v = new Vector(10);
for (int i = 1; i<100; i++)
{Object o = new Object();
v.add(o);
}
v= null;
會有漏電,因爲我只清零的參考向量,但所有的100個對象的引用仍然存在,因此將不會被GC回收,而他們的對系統沒有用處。
請幫助檢查我是否正確理解Java中的內存泄漏,提前致謝!
您不應該將引用設置爲null。 GC比我們知道什麼時候有資格進行清理要聰明得多。 – duffymo 2013-04-07 12:26:49