VisualVM を使用してソフトウェアのデバッグを開始しました。私はこのソフトウェアに慣れ始めたばかりです。
メモリリークがあります。疑いのある sth を見つけましたが、どうすればよいかわかりません。
次のステップは何ですか?
VisualVM を使用してソフトウェアのデバッグを開始しました。私はこのソフトウェアに慣れ始めたばかりです。
メモリリークがあります。疑いのある sth を見つけましたが、どうすればよいかわかりません。
次のステップは何ですか?
これは、私が Java visualVM を使用してメモリ リークをすばやく追跡する方法です。
最初にブレークポイントを設定するか、検査したい場所でコードを一時停止します。
プログラムのヒープ ダンプを実行し、「インスタンス ビューで表示」を使用して、リークが疑われるクラスのインスタンスを詳細に表示します (つまり、明らかにメモリ内のインスタンスが多すぎます)。
次に、収集する必要があったそのクラスのインスタンスを 1 つ特定します。「参照」パネルで、クラスを参照するすべてのオブジェクトを確認できます。「これ」を右クリックして「最も近い GC ルート」を選択すると、GC によるクラスの収集を妨げている参照が表示されます。
このようにして、間違った参照がどこにあるかをすばやく特定し、それに応じてプログラムを修正して、リークを回避できます。
頑張ってください。これは実際には非常に興味深い作業です。初心者であれば、JVM の仕組みについて多くのことを学ぶことができます。
あなたのアプリケーションについては何も知りませんが、メモリ リークは HashMap にまでさかのぼることができるのではないかと思います。多くの場合、値はマップに蓄積されます (キャッシュのため...)。これらの同様の投稿もご覧ください。