我的班级中有全局静态注册表,在某些情况下会注册实例。实际上它并不依赖于垃圾收集,但一些功能显然是放在finalize()
.
在 jUnit 测试期间,我希望测试此功能是如何工作的,但我无法强制调用 GC。我打电话给gc()
我tearDown()
@After
public void tearDown() throws Exception {
log.debug("tearDown()");
a = null;
b = null;
c = null;
d = null;
e = null;
f = null;
g = null;
System.gc();
log.debug("asserting hash size");
assertEquals(0, Myclass.getRegisterSize());
}
但这无济于事。我在日志中看到断言消息出现在最终确定之前。
是否可以等到所有最终确定发生?
是否有任何其他方法,例如重新启动类加载器或刷新堆或 jUnit 中的某些东西?我的意思是从头开始做所有事情?