2016-03-29 15 views
0

当社の製品は、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内部からヒープをダンプするには、

  • +0

    を実行して、私はその質問を見ました。その質問が2年前に尋ねられたことを考えれば、私は仕事が終わることができるユーティリティなどがあるかどうかを見たいと思っています。 – anjanb

    答えて

    1
    1. 、ありがとうございました。
      私は小さなユーティリティを書きました。https://github.com/apangin/jattachを参照してください。

      makeしてプログラムをビルドし、その後

      jattach <PID> dumpheap /path/to/heapdump.bin 
      
    +0

    jattachは.hprofをダンプしますか? – anjanb

    +0

    私はcygwin/windowsでビルドしようとしましたがビルドできませんでした。 githubで同じ問題が発生しています。 – anjanb

    +0

    @anjanbはい、jmapと全く同じように.hprofをダンプします。 Windows用のjattach実装を追加しました。 – apangin

    関連する問題