0

private static Map<interface,class> m =new HashMap<interface,class>;

クラスのインスタンス変数です。

のコンストラクタでclass Synchronized(m){m.put(this,this);}

ここでの問題は、キーと値が同じであるため、更新された指示が来ると、HAshMap がすべてのデータを収集し、GC されることはありません。漏れの原因になっています。

回避策を試して static キーワードを削除したところ、問題なく動作していますが、 static を削除すると重大な問題が発生する可能性があると思います。

この種の漏れを修正する他の方法はありますか。コードのリファクタリングは非常に複雑で時間がないため、不可能です。誰でも私を導いてください。前もって感謝します

4

3 に答える 3

3

ハッシュ マップが不要なエントリを保持している場合は、それらを削除していないためです。

必要なエントリのみを保持する場合、静的コレクションでメモリ リークが発生する特別な理由はありません。

于 2013-01-08T07:18:02.063 に答える