jmap
のヘルプメッセージの抜粋:
λ > jmap
Usage:
jmap [option] <pid>
(to connect to running process)
jmap [option] <executable <core>
(to connect to a core file)
jmap [option] [[email protected]]<remote server IP or hostname>
(to connect to remote debug server)
where <option> is one of:
<none> to print same info as Solaris pmap
-heap to print java heap summary
... stuff ...
-J<flag> to pass <flag> directly to the runtime system
だから-J
フラグをJVMに直接、引数を渡す参照してください。 jvm
ヘルプメッセージで
ルック:
λ > java
Usage: java [-options] class [args...]
(to execute a class)
or java [-options] -jar jarfile [args...]
(to execute a jar file)
where options include:
-d32 use a 32-bit data model if available
-d64 use a 64-bit data model if available (implies -server, only for x86_64)
のでjmap -J-d64
は本当に64ビットのモデルの代わりに、32ビットを使用して、java -d64
を開始するjmap
を語っています。
jmap
を実行しているプロセスが64ビットJVMでない場合は、-J-d64
引数を渡さないでください。
編集は私が
をトラブルシューティングするためにjmap
/jhat
の多くを行っているので、あなたが破損していると言うとき、あなたはjhat
を意味しています実際に破損したヒープ・ダンプを報告しますか?それとも、ヒープダンプが大きすぎて読み込めるからですか? jhat
は、ダンプ全体をメモリにロードしようとします。したがって、ダンプのサイズ以上の空きメモリが必要です。ヒープ領域を増やすには、-Xmx
〜jhat
とJ-d64
を指定する必要があります。
私が使用するはるかに良い代替はEclipse Memory Analyzer Toolです。これは、すべてをプリロードするのではなく、ヒープダンプを選択的に読み込みます。私にとっては、6 GB以上のヒープダンプでは、jhat
よりもはるかに優れていました。