パブリック クラスOOM { プライベート 静的リスト<バイト[]>リスト= 新しいのArrayList <バイト[]> (); パブリック 静的 ボイドメイン(文字列[]引数){ ジップジップ = 新しい郵便番号()。 zip.test(リスト); } }
パブリック クラスジップ{ プライベートリスト<バイト[]> A = nullを。 公衆リスト<バイト[]> 下駄(){ 戻りA。 } 公共 ボイドセットA(一覧<バイト[]> ){ この .A = 。 } 公共 ボイド試験(一覧<バイト[]> リスト){ ジップN = 新しい郵便番号()。 n.setA(リスト); R R = 新しいR(); r.test1(N) } }
パブリック クラスR { 公共 ボイドTEST1(ジップZ){ 一方(真){ バイト[] B = 新しいバイト[100000 ]。 z.getA()(b)に追加します。; } } }
私は意図的にオーバーフローするコードの一部を作成しました。
リーク容疑者によってGCルートの図の分析に見ることができます。比較コードとBA。
以下に示すように、あなたはまた、分析gcrootその上を実行することができ、大きなオブジェクトを保持するためにスレッドに取得することができ支配ツリーをクリックし、分析するための他の方法があります。
最後の言葉、
実際の状況はそれほど明確ではありません。あなたは、問題が発生し、最終的に見つけるために、GCルート・パス1時上のすべてのポイントを持っている必要があります。