2017-09-05 2 views
1

JavaEE7/CDIアプリケーションでChronicleMapを使用しています。会話の範囲は多く使われています。 マップを閉じるためにユーザーが会話を終了する場所を予測することは非常に難しいです。クロニクルマップが手動で閉じられていない、クリーナーからクリーンアップ

@PreDestroyメソッドですべてのインスタンスを閉じようとしていますが、明らかにすべてを閉じるわけではありません。

11:20:47,866 ERROR [net.openhft.chronicle.hash.impl.ChronicleHashResources] (Reference Handler) ChronicleMap{name=null, file=null, identityHashCode=1146047764} is not closed manually, cleaned up from Cleaner

が、それは手動でマップを閉じないように害ん。

次のエラーの結果は何ですか?

マップはまずクリーナーからクリーンアップされる前に閉じられていますか?

ありがとうございました

+1

"明らかに私はそれらのすべてを閉じているわけではない"とはどういう意味ですか? PreDestroyはBeanを削除する前にコンテナによって呼び出されます。会話ごとに異なるクロニクルマップを開いていますか?それはあなたがマップで動作し、あなたの会話スコープの豆にそのサービスを注入するアプリケーションスコープサービスを持っている必要があるようです。 –

+1

@ SergeyProkofievありがとうございます。私はあなたのアプリケーションやセッションの範囲の提案が好きです。 – kem

+1

JavaEEアプリケーションは別のJavaSEアプリケーションに基づいています。両方とも多くのChronicleMapを使用します。私は@PreDestroyがJavaEEアプリマップインスタンスの仕事をしていると信じています。 JavaSEアプリケーション – kem

答えて

1

クロニクルマップを閉じることは、eよりも危険ではありません。 g。 ByteBuffersを直接マップ解除しないでください。正式にはライブ作業セットのオブジェクト+ライブのオフヒープメモリが構成された制限を超えないにもかかわらず、不幸なシナリオでOutOfMemoryErrorが発生する可能性があります。

関連する問題