WR を過度に熱狂的に使用することによって何らかの損害が発生する可能性はありますか?
はい、できます。
懸念事項の 1 つは、弱い参照によってコードが複雑になり、エラーが発生しやすくなる可能性があることです。弱参照を使用するコードは、使用するたびに参照が壊れる可能性に対処する必要があります。弱参照を使いすぎると、余分なコードをたくさん書くことになります。(チェックを処理し、破棄されたオブジェクトをオンデマンドで再作成するメソッドの背後に各弱い参照を隠すことで、これを軽減できます。しかし、これは必ずしもそれほど単純ではない可能性があります。たとえば、再作成プロセスにネットワークが関係している場合などです。再作成失敗の可能性に対処する必要があります。)
2 つ目の懸念は、弱参照を使用すると実行時のオーバーヘッドが発生することです。明らかなコストは、弱い参照を作成get
してそれらを呼び出すことです。あまり明白でないコストは、GC を実行するたびにかなりの余分な作業を行う必要があることです。
最後の懸念は、アプリケーションが将来必要とする可能性が非常に高いものに弱参照を使用すると、それを繰り返し再作成するコストが発生する可能性があることです。このコストが高い場合 (CPU 時間、IO 帯域幅、ネットワーク トラフィックなどの点で)、結果としてアプリケーションのパフォーマンスが低下する可能性があります。JVM により多くのメモリを割り当て、弱い参照をまったく使用しない方がよい場合があります。
もちろん、これは弱参照の使用を完全に避けるべきだという意味ではありません。慎重に考える必要があるというだけです。そしておそらく、最初にアプリケーションでメモリ プロファイラを実行して、メモリ使用量の問題がどこから生じているかを突き止める必要があります。