BLOGTIMES
2021/06/23

任意のタイミングで Java アプリケーションの HeapDump を取る

  java 
このエントリーをはてなブックマークに追加

Java 11 からは hprof がなくなってしまったので、OOM の時以外の任意のタイミングで*1ヒープの内容を簡単にするダンプ方法を調べてみました。

どうやら、HotSpotDiagnosticMXBean*2を直接呼出すしかないようです。

メソッドとして実装するとこんな感じでしょうか。

public static void dumpHeap(String filePath) throws IOException { Files.deleteIfExists(Paths.get(filePath)); MBeanServer server = ManagementFactory.getPlatformMBeanServer(); HotSpotDiagnosticMXBean mxBean; mxBean = ManagementFactory.newPlatformMXBeanProxy(server, "com.sun.management:type=HotSpotDiagnostic", HotSpotDiagnosticMXBean.class); mxBean.dumpHeap(filePath, false); }

参考


トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/12552
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form

OpenID を使ってログインすることができます。

Identity URL: Yahoo! JAPAN IDでログイン