4

私は最近、Javaでソフト、ウィーク、ファントムの参照型を試してみましたが、まだ出会っていない用途があるのではないかと考えています。私は過去にそれらをさまざまな目的で使用しましたが、常に次のカテゴリに分類されています。

  • ファイナライザーの代わりにファントム参照を使用する-死んだオブジェクトが復活する可能性がないため、これが好きです
  • ハッシュマップで弱参照を使用してobject=>valueマッピングを保持します。ここで、マッピングは、オブジェクトが他の場所に存在する場合にのみ配置する必要があります(たとえば、ソースを作成できないライブラリ内のオブジェクトに追加情報を追加する必要がある場合に便利です。変更)
  • キャッシュにソフト参照を使用する(JVMはソフト参照をずっと長く保持し、必要と思われる場合にのみ解放するため、弱参照よりもはるかにうまく機能します)。

しかし、そこには3つの用途しかなく、私がこれまでに出会ったことのない、役立つかもしれないものがもっとたくさんあると思います。すべての提案を歓迎します!

4

1 に答える 1

1

2つの奇妙なアイデア:

  • ソフト参照を使用して、メモリが不足していることを確認し、ソフト参照を使用できないキャッシュを手動で解放することができます。
  • 弱参照を使用して、GCがいつ実行されるかを調べることができます。これは、GCに関連している場合と関連していない場合がある奇妙なプログラムの一時停止が発生している場合に役立ちます。

IMHO、いくつかの(まれな)ケースでは、弱い参照がキャッシュに適している場合があります。たとえば、値を使用して構造から削除された後、再び必要になる可能性が低い値を弱参照する場合があります(つまり、値が非常に到達不能になります)。さらに、 JVMにはソフト参照に関する重大なバグがあり、そうすることを余儀なくされる可能性があります。

于 2011-01-21T01:50:27.980 に答える