Javaプログラムで自分自身のヒープダンプを吐く
自分で喉に指突っ込むみたいなアレですが、メモリリークの単体テスト書いててこのタイミングでヒープダンプ取りたいなー、というユースケースがあったので。
String heapDumpFilename = "heap.bin"; boolean liveOnly = true; MBeanServer server = ManagementFactory.getPlatformMBeanServer(); ObjectName name = ObjectName.getInstance("com.sun.management:type=HotSpotDiagnostic"); String operation = "dumpHeap"; Object[] params = { heapDumpFilename, liveOnly }; String[] sig = { "java.lang.String", "boolean" }; server.invoke(name, operation, params, sig);