記憶がなくなる直前に何かをしてください
-
30-09-2019 - |
質問
Javaには、記憶がなくなる直前に何かをする方法はありますか。たとえば、以前のドキュメント状態のリストを(元に戻すために)保持し、メモリが尽きるときに非常に古い状態のみを削除するのですか?
解決
たとえば、以前のドキュメント状態のリストを(元に戻すために)保持し、メモリが尽きるときに非常に古い状態のみを削除するのですか?
あなたは何かをすることができるかもしれません SoftReference
. 。また、一般的なドキュメントにも注意してください java.lang.ref パッケージ。オブジェクトがAを介してのみ到達可能である場合 SoftReference
, 、それらは、メモリのエラーが発生する前に収集されるゴミになります。ただし、VMは、このようなイベントの前にこれらの参照を保持する必要がないこと、またはそれらがクリアされる可能性のある順序について保証する必要はないことに注意してください。
他のヒント
はい、それは確かに可能です。
私はおそらくのリストを使用するでしょう softreference以前のドキュメントの状態の場合。これらは、メモリ外の例外が発生する前に処分されることが保証されています。
いくつかの定期的な間隔で、リストからnull参照をきれいにすることができます。
また、少なくとも1つの元に戻すことを常に保証できるように、最新の状態への通常の参照を保持することをお勧めします:-)
JVMの実装に依存しますが、運が良ければ、JVMは最新の状態を維持し、最も古い状態を処分します。これはJVM仕様では厳密には必要ではありませんが、推奨される動作です。
所属していません StackOverflow