当社の製品は、Windows上でJRE(JDKなし)を使用してお客様のサーバー上で動作します。Windows上でのみJREからヒープダンプを取得
フラグを使ってOutOfMemoryErrorにヒープダンプを取得できます。
しかし、JRE JVMプロセスからヒープダンプを積極的に取得する方法はありますか?
健康なヒープダンプをいくつか取得し、それらをOutOfMemoryErrorで取得したヒープダンプと比較する予定でした。
お客様は、このツール/ユーティリティをダウンロードしてサーバー上で実行し、希望どおりにヒープダンプを取得することができます。
私はjvisualvmを試しましたが、jvisualvmは製品jVMをリストしませんでした。その時点で実行されていたJVMのうち、その時点で実行されていたJVMのすべてではなく、一部のJVMしかリストされません。 PLUS jvisualvmは非常に大量です。
P.S:JVMのホスト上で実行してヒープをダンプできるサードパーティのユーティリティはありますか?また、現時点でJREをアップグレードすることはできません。そして、前の質問に対する答えのどれも答えとして選択されていません! HotSpot Dynamic Attach mechanismを使用し、外部から別のプロセスのヒープをダンプするには
HotSpotDiagnosticMXBean hs =
ManagementFactory.getPlatformMXBean(HotSpotDiagnosticMXBean.class);
hs.dumpHeap("/path/to/heapdump.bin", false);
:
はcom.sun.management.HotSpotDiagnosticMXBean
を使用し、JVM内部からヒープをダンプするには、
を実行して、私はその質問を見ました。その質問が2年前に尋ねられたことを考えれば、私は仕事が終わることができるユーティリティなどがあるかどうかを見たいと思っています。 – anjanb