我有一个对象 (Object1) 的实例,其构造函数创建其他对象 (Object2) 的实例并将它们存储在 ArrayList 中。Object2 有一个静态 instancecount 变量(在其他静态变量中),并且 Object2 的实例依赖于这个 instancecount。在一个测试程序中,我运行了一个 for 循环,其中在每次迭代时都会创建一个 Object1 的实例,然后对 Object1 的实例的引用重新分配一个空值。我的测试程序看起来像:
for (...) {
Object1 obj = new Object1(...); //which creates several Object2's
obj.myMethod();
obj = null;
}
问题是 Object2 的实例在每次循环迭代结束时没有得到垃圾收集,因此 Object2 的静态 instancecount 变量只会随着每次迭代而增长(随着内存使用量)。这是可以预料的吗?有没有办法强制清理 Object2 实例,以便每个循环都有一个新的开始?这是一个糟糕的程序设计吗?
谢谢!瑞安