If I take dump, using Windbg, of Java process running on Windows
Can I analyze (easly?) the Java heap, objects, and threads?
Just like I could do with SOS for .Net process?
Otherwise - how can I offline debug a problem happening on production systems?
Thanks!
Identify the process id of the running application in Windows from the Task Manager. In Linux, to identify the process id, use ps –ef | grep java . Open the heap dump in Eclipse Memory Analyzer using the option File --> Open Heap Dump. First, it will prompt you to create a leak suspect report.
Java dumps, sometimes referred to as Java cores, are produced when the VM ends unexpectedly because of an operating system signal, OutOfMemoryError , or a user-initiated keystroke combination.
We will first start the Memory Analyzer Tool and open the heap dump file. In Eclipse MAT, two types of object sizes are reported: Shallow heap size: The shallow heap of an object is its size in the memory. Retained heap size: Retained heap is the amount of memory that will be freed when an object is garbage collected.
Windows minidumps (.dmp) can be used with these utilities:
jvisualvm
utility from JDK can get you both thread dump and heap dump
jvisualvm
Applications
pane, find VM Coredumps
Add VM Coredump...
.dmp
minidump fileOK
VM Coredumps
Thread Dump
Heap Dump
jstack
utility from JDK can show Java stack from Windows minidumps (.dmp)
Here's a batch script for that:
:: Shows java stack from Windows minidumps
:: Argument %1: Path to minidump
@ECHO OFF
SET JDK_PATH=C:\Program Files\Java\jdk1.8.0_181\bin
"%JDK_PATH%\jstack.exe" "%JDK_PATH%\java" "%~1"
PAUSE
jmap
utility from JDK can convert Windows minidump (.dmp) to java heap dump (.hprof)
Here's a batch script for that:
:: Converts Windows minidump to Java heap dump (.hprof)
:: Argument %1: Path to minidump
@ECHO OFF
SET JDK_PATH=C:\Program Files\Java\jdk1.8.0_181\bin
"%JDK_PATH%\jmap.exe" -F -dump:format=b,file="%~dpn1.hprof" "%JDK_PATH%\java" "%~1"
PAUSE
jvisualvm can be used to load a dump and then analyze it
EDIT:
This comes in the JDK redist...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With