更多 Java 虚拟机方面的文章,请参见文集《Java 虚拟机》
内存泄漏
存在无用但是仍可达的对象,导致无法被 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 发生变化,s.remove(str);
实际上并没有从集合中删除元素。
Set<String> s = new HashSet<String>();
String str = "ABC";
s.add(str);
str = "ABCD";
s.remove(str);
各种连接
例如 IO 连接,数据库连接,记得关闭 close()