2013-11-27 11 views
10

私はこれを試したGet a heapdump on JVM from Tomcat 6 しかし、それは私のためには動作しませんが、Tomcatサーバーからヒープダンプを取得する他の方法はありますか?前もって感謝します!ヒープダンプを取得する方法を

+0

ヒープダンプを作成しようとしたときに問題が発生しましたか? – Taky

+0

メモリ不足のためJVMが枯渇したときにヒープダンプを作成するだけでリンクします。あなたが望むときはいつでも、あなたはヒップダンプをすることができません。しかしそれはあなたにとってまだ非常に便利な選択肢です。 – Taky

答えて

17

ヒープダンプを取得する最も簡単な方法は、jmapを使用することです。 Javaプロセスを持つマシン上でjmapコマンドを実行します。使用例:

jmap -dump:file=/mnt/heapdump_2013-04-01.data 29842 

jps java Pidを知っている。


jvisualvmでヒープダンプを行うこともできます。 jmxまたはjstatd経由でリモートマシンに接続できます。ヒープダンプを作成し、リモートマシンに格納することができます。

ヒープダンプを分析するには、アドバイスを受けることができます:MAT。問題をすばやく理解できる非常に強力なツールです。あなたはマットのino良いを見つけることができます。


あなたはバイナリダンプを作ることができ、長い時間(You can use gcore or gdb)用のアプリケーションを停止したくない場合。そして、あなたはuse jmap to analyze gdb dumpです。詳しくは、atlassian blogでお読みください。 someissuesに注意してください。

+0

あなたは "sudo" – th3morg

5

jvisualvmの「ダンプヒープ」ボタンの他​​に、JMXインターフェイスを使用する方法もあります。この方法では、ダンプを格納する場所を指定することさえできます。

JMXプラグインを使用してjconsoleまたはjvisualvmを使用して、tomcatのJMXサーバーに接続します。その後、com.sun.management - >HotSpotDiagnotic - >Operationsに到達しました。 dumpHeapの横に2つのパラメータを入力します。 Oracleのドキュメントから(hereを参照してください):

パラメータ:

OUTPUTFILE - システムに依存するファイル名

ライブ - 真のダンプは、オブジェクトだけが他人から到達可能なオブジェクト、すなわち住んでいる場合

次に、dumpHeapを押して、ダンプを書き込んでいる間にVMのフリーズをしばらく観察してください。

1

私はビジュアルVM http://visualvm.java.net/をお勧めします。これはtomcatに接続し、ヒープダンプを作成して読み込み、スレッドダンプ、CPUとメモリサンプラを作成することができます。

新しいjdk 1.7を使用する場合、VisualVMはすでにjdkフォルダにパッケージされています。

関連する問題