問題タブ [heap-dump]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - OutOfMemory 例外で PHP がヒープをダンプするようにする
現在、常に OutOfMemory 例外が発生するスクリプトをデバッグしています。これは cronjob として実行され、通常は正常に動作しますが、cronjob がしばらく実行されなかった場合 (何らかの理由で)、スクリプトはキューに入っている多くの要素を処理する必要があり、OutOfMemory 例外が発生します。
コードを調べても、問題を特定できませんでした。反復関数呼び出しの 1 つがメモリをリークする可能性があると思いますが、どれがどこであるかはわかりません。OutOfMemory 例外が発生したときに PHP にヒープをダンプさせるオプションはありますか? そこから問題を見つけることができるかもしれません (ほとんどの場合)。
java - System.gc() と、ライブのみのヒープ ダンプを取得することによって実行されるデッド オブジェクトの再利用の違いは?
JVM がガベージ コレクションに労力を費やすことを示唆するには、直接的または間接的に少なくとも 2 つの方法があります。
System.gc()
- ヒープ ダンプを取り、ライブ オブジェクトのみを要求する
後者では、プログラムでヒープ ダンプを取得できます。
強く到達できないオブジェクトを収集するためにこれら 2 つの操作が行うことの間に、あるとすればどのような違いがありますか?
System.gc()
ヒープ ダンプ アプローチは、弱い参照、RMI 分散ガベージ コレクション、およびスタックから強力に到達可能な非表示オブジェクトの組み合わせが存在する場合よりも攻撃的であるという証拠があると思います。特に、ローカルでのアクセスが弱くUnreferenced
、RMI に関しては、ヒープ ダンプによってのみ収集されるようになったオブジェクトが表示されます。これを小さなテストケースに分解することはまだできていませんが、再現可能です。
(製品コードの特定の GC 動作に依存しないように警告される前に、私はそうではありません。メモリ リークの可能性を調査しているときにこれを発見し、いつヒープ ダンプを取得したかによって結果が異なることに気付きました。奇妙な。)
これは、Windows 7 で HotSpot 64-Bit Server VM 1.6.0_22 を使用しています。
java - オフライン Java ヒープ ダンプ (.hprof) を分析するためのツールまたはトリック
.hprof ファイルのオフライン分析 (要約/並べ替え/選別を含む) を可能にするツールはありますか? または、VisualVM やハットなどをバッチ モードで実行できますか?
入力 .hprof ファイルを取得し、それを処理してレポートを生成できるものに興味があります。
レポートを構成するには、一連のオプションを渡す必要があると思います。役立つヒントを知っている場合は、参考にしてください。
できればスクリプト化できるので、一度にたくさん実行できます。
java - jhat を使用してヒープ ダンプを分析する方法
ヒープ ダンプで jhat を実行したところ、レポートが生成されました。レポートを使用してヒープを分析するにはどうすればよいですか。インスタンス数以外は完全には理解できませんでした。それに関する参考文献やケーススタディはありますか。要するに、さらに先に進む必要があります。どうすればよいですか?
また、オブジェクトクエリ言語とは何ですか。
java - Dalvik GC の動作を分析するには?
Androidでアプリケーションを開発しています。これは、センサー データを継続的に処理する長時間実行されるアプリケーションです。アプリケーションの実行中に、logcat に多くの GC メッセージが表示されます。毎秒約1回。
これはおそらく、ループ内でオブジェクトが作成され、すぐに逆参照されるためです。
どのオブジェクトが作成され、すぐに解放されているかを調べるにはどうすればよいですか?
私が試したすべての Java ヒープ分析ツール (*) は、ヒープ上のオブジェクトの数とサイズに悩まされています。それらは便利ですが、一時的な短命オブジェクトが最も多く作成されるサイトを見つけることにもっと興味があります。
(*) やってみjcat
ましEclipse MAT
た。hat
Android のヒープダンプを処理することができませんでした。サポートされていないダンプ ファイルのバージョンについて不平を言いました。
java - JVisualVMの「ヒープダンプ」ボタンでメモリを解放できますか?
私は非常に奇妙な問題を抱えています。私は Eclipse Equinox に基づく OSGi アプリケーションに取り組んでいます。これは OSGi Log Service (Equinox 実装) を使用して開発されたもので、現在、Apache Felix OSGi Log Service 実装でテストしています。
API/コード側では、すべて正常に動作します。OSGi ログ サービスは標準であるため、Equinox から Felix に問題なく交換できます。
ただし、この奇妙な動作を観察しました。アプリケーションをコンソール プログラムとして起動し、コンソールでログ出力を確認し、メモリ使用量を分析するために JVisualVM をアタッチしました。JVisualVM グラフは、80 MB の使用済みヒープを示しました。
13 時間後、平均ヒープ サイズが 220 MB に達したので、ヒープ ダンプを分析することにし、「ヒープ ダンプ」ボタンを押しました。この操作の後、JVisualVM グラフは 20(min)-35 の使用済みヒープを示しました。 (最大) MB (?!?!)、この値は一定でした。
「ヒープ ダンプ」操作で 200 mbs 近く解放できますか? はいの場合、なぜですか?
Equinox OSGi Log Service の実装でこの動作を見たことがないので、Felix Log がこの問題に関与していると思われます...
ありがとう
java - 巨大なヒープダンプ(11GB)-Jhatが失敗し、EclipseMATが助けを必要としていた
EAでメモリエラーが発生し、-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/some/dir
OOM時にヒープをダンプしていました。
12GBのヒープメモリと256MBのpermgenがありました。
ヒープダンプは、アプリケーションを実行しているLinuxボックスで生成され、そのサイズは11.5GBです。ローカルにダウンロードする権限がありません。
JHATを使用してその11GBヒープダンプを分析しようとすると、OOMがスローされました。
LinuxCLIから次のコマンドを試しました。
すべてのオプションで、ダンプを数分間(> 30分)読み取った後にOOM例外がスローされます。
私たちはそれをグーグルで検索し、 MATを強力なヒープダンプアナライザーとして見つけましたが、LINUXでそれを使用する方法ではありませんでした。
どんな提案ももっと助けになるでしょう。ありがとう。
変更:
Linux x86_64マシンにMATをインストールしましたが、実行時に次のエラーが発生しました./MemoryAnalyzer
これを試してみ./ParseHeapDump.sh ../java_pid1491.hprof
たところ、次のエラーが発生しました。
java - Eclipse メモリ アナライザー - ヒープ ダンプを取得しようとするとエラーが発生する
Eclipse Memory Analyzer Tool (MAT) を使用してヒープダンプを取得しようとしています。Weblogic 10.3 アプリ サーバーを実行しています。32 ビット Java がインストールされた Windows XP OS です。Weblogic を実行しているプロセスに対して MAT を使用してヒープ ダンプを取得しようとすると、次のエラーが発生します。
どんな助けでも大歓迎です。
ありがとう、シド
java - 大きなヒープダンプを分析する方法は?
JVMに1.5GBしか割り当てられない場合、大きなJavaヒープダンプ(2GB)を分析するツールはありますか?ダンプを分析するためにメモリに完全にロードする必要があるとは信じられません...
Eclipse MemoryAnalyzerが失敗し、IBMツールも失敗します。
ここでコマンドラインツールを使用する必要がありますか?
groovy - ヒープダンプでGroovyConsoleスクリプトの文字列バージョンを検索する
GroovyConsoleで誤って無限ループのスクリプトを実行しました。:-\
マーフィーの法則のために、私は3〜4時間の間自分の仕事を保存していません。したがって、GroovyConsoleプロセスを強制終了する前に、この時点で実行されていたスクリプトの文字列バージョンを見つけることを期待して、ヒープをダンプしました。
どのクラスを非表示にできるか、または可能かどうかのヒントはありますか?