クラスにグローバル静的レジストリがあり、状況によってはインスタンスを登録します。実際にはガベージコレクションに依存していませんが、一部の機能は明らかにに配置されてい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で何かを実行したりするなど、他の手段はありますか?私はすべてをゼロから行うつもりですか?