ヒープウォーカーでのオーバーヘッドの最小化
小さなヒープの場合、ヒープスナップショットを取得するのに数秒かかりますが、非常に大きなヒープでは、これは長いプロセスになることがあります。物理メモリが不足していると、計算が非常に遅くなることがあります。たとえば、JVMが50 GBのヒープを持ち、ローカルマシンで5 GBの空き物理メモリしかない場合、JProfilerは特定のインデックスをメモリに保持できず、処理時間が不釣り合いに増加します。
JProfilerは主にヒープ分析にネイティブメモリを使用するため、-Xmx
値を bin/jprofiler.vmoptions
ファイルで増やすことは、OutOfMemoryError
が発生し、JProfilerがそのような変更を指示した場合を除いて推奨されません。ネイティブメモリは利用可能であれば自動的に使用されます。分析が完了し、内部データベースが構築された後、ネイティブメモリは解放されます。
ライブスナップショットの場合、ヒープダンプを取得した直後に分析が計算されます。スナップショットを保存すると、分析はスナップショットファイルの隣に .analysis
サフィックスを持つディレクトリに保存されます。スナップショットファイルを開くと、ヒープウォーカーは非常に迅速に利用可能になります。.analysis
ディレクトリを削除すると、スナップショットを開いたときに計算が再度実行されるため、スナップショットを他の人に送る場合、分析ディレクトリを一緒に送る必要はありません。
ディスク上のメモリを節約したい場合や、生成された .analysis
ディレクトリが不便な場合は、一般設定でその作成を無効にすることができます。
HPROFスナップショットとオフラインプロファイリングで保存されたJProfilerスナップショットには、.analysis
ディレクトリが隣にありません。なぜなら、分析はJProfiler
UIによって行われ、プロファイリングエージェントによって行われないからです。そのようなスナップショットを開くときに計算を待ちたくない場合は、
コマンドライン実行可能ファイルを使用してスナップショットを jpanalyze事前分析することができます。
スナップショットは書き込み可能なディレクトリから開くことをお勧めします。分析なしでスナップショットを開き、そのディレクトリが書き込み可能でない場合、分析には一時的な場所が使用されます。そのため、スナップショットを開くたびに計算を繰り返す必要があります。
分析の大部分は保持サイズの計算です。処理時間が長すぎる場合で保持サイズが必要ない場合は、ヒープウォーカーオプションダイアログのオーバーヘッドオプションでその計算を無効にすることができます。保持サイズに加えて、その場合「最大オブジェクト」ビューも利用できなくなります。プリミティブデータを記録しないことでヒープスナップショットが小さくなりますが、参照ビューでそれらを見ることはできません。同じオプションは、ファイル選択ダイアログで分析をカスタマイズを選択した場合にスナップショットを開くときに提示されます。