JAVA仮想マシンの研究ノートの深い理解(B)

2.4.1 Javaのヒープオーバーフロー

Javaヒープがいる限り、我々は、オブジェクト間のオブジェクトの数の増加に伴って、これらのオブジェクトを削除するには、ガベージコレクションを回避するために到達可能なパスをGCのルーツをオブジェクトを作成し、確保するために続けて、オブジェクトのインスタンスを格納するために使用され、総容量は最大ヒープに到達しますそれはメモリオーバーフロー例外の容量制限があります。
OutOfMemoryErrorが発生のJavaのヒープメモリは、最も一般的なメモリ・オーバーフロー例外の実用的なアプリケーションです。Javaのヒープメモリオーバーフローの例外スタック情報「java.lang.OutOfMemoryErrorを」の出現がさらに続くときは、「Javaのヒープ領域」ことを示唆しています。
解決例外は、従来の治療法にこのメモリ領域は、第一ヒープダンプ(例えばEclipseのMemoryAnalyzerなど)メモリイメージ分析ツールによってダンプスナップショット分析することです。最初のステップは、OOMオブジェクトへのメモリリードが必要であるかどうかを最初の確認は、すなわち、最終的に最初に、メモリリーク(メモリリーク)またはメモリのオーバーフロー(メモリオーバーフロー)があることが明らかにしなければならないはずです。
それはメモリリークがある場合、あなたは、タイプがリークオブジェクトに応じて、オブジェクトがガベージコレクタへのリードは、それらを再利用することはできませんGCのルーツに関連したものを参照パス、であるが漏れる見つけ、GCのルーツ参照チェーンのツールを使用して、リークオブジェクトを確認することができます基準情報GCルーツ鎖への特定の位置情報は、一般的に、より正確に作成され、これらのオブジェクトの位置を見つけることができ、その後、コードメモリリークを見つけます。
それはメモリリークではない場合、つまり、メモリ内のオブジェクトは、本当に生き残るために必須である、それがあるかどうかを確認するために、マシンと比較して、メモリ、Java仮想マシンのヒープのパラメータ(-Xmxと-Xms)の設定を確認する必要がありますスペースの上方修正。その時から、特定のオブジェクトのライフサイクルの存在のためのコードをチェックの上に長すぎる、長すぎるメモリ消費がプログラムを実行最小限に抑えるために、等の状況、ストレージ不合理な構造設計を、保持されています。

リリース8元の記事 ウォンの賞賛2 ビュー209

おすすめ

転載: blog.csdn.net/qq_37492314/article/details/105331296