Java言語の保証されたfinalize()に似たオブジェクトの動作を実装したいと思います。ガベージコレクションの直前にの文を実行したいが発生します。最終的にtryブロックの直後に実行されるので、finallyブロックはここでは役に立たないことに注意してください。これは私の必要条件ではありません。基本的には、JVMのヒープからアンロードされる直前にオブジェクトをシリアル化する必要があります。お知らせ下さい。オブジェクトの保証されたファイナンス動作を実装する方法
答えて
シャットダウン時にJVMにフックを追加できます。 http://docs.oracle.com/javase/6/docs/api/java/lang/Runtime.html#addShutdownHook%28java.lang.Thread%29
@ user949300のファントムと一緒に使えるようです。ただし、フックはすべてのオブジェクトへの弱い参照を格納する必要があります。フック用のJavaサービスインタフェースを作成する場合は、オブジェクトコンストラクタでそのサービスインタフェースを使用できます。しかし、醜いですね。
実行するfinalize()
メソッドを実装する方法はありません。に関係なく、JVMはそれを呼び出すことが保証されていないためです。たとえば、プログラムが終了したときにヒープに残ったオブジェクトは、現在のJVMに応じて、finalize()
メソッドが呼び出されないことがあります。
finalize()
を使用してメモリ以外のリソースを解放するのは一般的にお勧めできません。リソースを解放する以外の方法はほとんどありません。オブジェクトをシリアライズする場合は、別の時点を選択してみてください。
ファイナライザについて知っておくべきことをほぼまとめたgood articleがあります。
私はファントムリファレンス(悪いスターウォーズ映画のようなものです)を使用したことはありませんが、それはトリックを行うかもしれないように聞こえます。
"ファクタム参照オブジェクトは、コレクタが他の方法で再利用できると判断した後にエンキューされます。ファントム参照は、Javaファイナライズで可能なよりも柔軟性の高い方法で、メカニズム。 "
素晴らしい提案、本当に私の問題を解決しました。これははるか遠くのファントム参照オブジェクト[http://www.pawlan.com/monica/articles/refobjs/]の最高の記事の1つです – sij
参考のためにありがとう - よく見えます。 – user949300
- 1. エンティティフレームワークコアrc2で型保証されたenumパターンを実装する方法
- 2. 動的に生成されたフォームフィールドのフォーム検証を実装する方法
- 3. ハッシュから動的に作成されたオブジェクトを保存する方法は?
- 4. 異なる動作を持つ同じクラスのオブジェクトを実装する方法
- 5. 私のコードアンドロイドに実装されたURLを保護する方法は?
- 6. オブジェクトのマージを実装する方法
- 7. フォームの自動保存を実装する方法は?
- 8. OC4Jで動作するJSPアプリケーションの「保守中のサイト」ページの実装方法
- 9. UWP、MySQL、実装されたListView、CRUD操作を実装する
- 10. RealmSwift:オブジェクトの実装方法?
- 11. WIF 4.5で自動証明書ローテーションを実装する方法
- 12. Spring起動アプリケーションでカスタム認証を実装する方法
- 13. 保証は先に実装
- 14. Delphiで自動保存機能を実装する方法は?
- 15. 動的に作成されたオブジェクトを別のオブジェクトに挿入する方法
- 16. owin認証のカスタム認証プロバイダを実装するための推奨される方法
- 17. ネストされたコンポーネントを含むフォームで自動フォーム検証を実装する方法は?
- 18. 保存されたオブジェクト/新しく作成されたオブジェクトを取得する方法
- 19. 保護されたセッターでVB.NETで自動的に実装されるプロパティ?
- 20. 動的に作成されたテキストボックスに自動執行を実装する方法
- 21. スレートによって作成されたgithubページで基本認証を実装する方法
- 22. 更新されたオブジェクトのリストボックスを保持する方法は?
- 23. 保持されたオブジェクトのメモリを解放する方法
- 24. ゲームの各レベルに保存されたゴーストを実装する
- 25. のC#で型安全なツリーの実装(型保証されたノード)
- 26. ソナタで動的フィルタ(リンクされた選択ボックス)を実装する方法は?
- 27. 動的ビューを実装する方法
- 28. パーソナライズされたイベントストリームを実装する方法は?
- 29. sqlite3でネストされたクエリを実装する方法
- 30. カスタマイズされたUISearchBarにscopeButtonTitlesを実装する方法は?
close()メソッドを実装します。ここでの議論http://stackoverflow.com/questions/158174/why-would-youever-implement-finalize –
ええ、私はそれを理解しているclose()は、缶の最新のキックです。 –