肯定有咯。
这是代码:
InputStream in = ReflectTest2.class.getResourceAsStream("config.properties");
Properties props = new Properties();
props.load(in);
in.close();
String className = props.getProperty("className");
Collection collections = (Collection)Class.forName(className).newInstance();
// Collection collections = new HashSet();
Person1 p = new Person1(3,3);
Person1 p1 = new Person1(5,5);
Person1 p2 = new Person1(3,3);
collections.add(p);
collections.add(p1);
collections.add(p2);
collections.add(p);
p.height = 7;
//collections.remove(p); //不管是否移除p,这个集合的长度都是2,这就造成内存泄漏
System.out.println(collections.size());
当一个对象被存储进HashSet集合中以后,就不能再去修改这个对象中的那些参与计算哈希值的字段,否则就会造成了内存泄漏。
|