更多 Java 虛擬機方面的文章,請參見文集《Java 虛擬機》
內(nèi)存泄漏
存在無用但是仍可達的對象,導致無法被 GC 回收。
集合類
例如: 盡管我們將 obj 設為空了,但是對象還是被 v 引用,所以不會被回收。
public static void main(String[] args) {
Vector v = new Vector(10);
for (int i = 0; i < 10; i++) {
Object obj = new Object();
v.add(obj);
obj = null;
}
}
集合里對象屬性的修改
例如:str 變成了 ABCD,導致 str 的 hash code 發(fā)生變化,s.remove(str); 實際上并沒有從集合中刪除元素。
Set<String> s = new HashSet<String>();
String str = "ABC";
s.add(str);
str = "ABCD";
s.remove(str);
各種連接
例如 IO 連接,數(shù)據(jù)庫連接,記得關閉 close()