Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Where to find the heap dump after an "Out Of Memory"

I'm using ASANT to run a xml file which points to a NARS.jar file.

I'm getting "java.lang.OutOfMemoryError: Java heap space" and i'm researching around this.

So i have found that i need to set "-XX:+HeapDumpOnOutOfMemoryError", to create a dump file to analyze.

I edited ASANT.bat and added the "-XX:+HeapDumpOnOutOfMemoryError" to ANT_OPTS:

set ANT_OPTS= "-XX:+HeapDumpOnOutOfMemoryError" "-Dos.name=Windows_NT" "-Djava.library.path=%AS_INSTALL%\lib;%AS_ICU_LIB%;%AS_NSS%" "-Dcom.sun.aas.installRoot=%AS_INSTALL%" "-Dcom.sun.aas.instanceRoot=%AS_INSTALL%" "-Dcom.sun.aas.instanceName=server" "-Dcom.sun.aas.configRoot=%AS_CONFIG%" "-Dcom.sun.aas.processLauncher=SE" "-Dderby.root=%AS_DERBY_INSTALL%"  

But i can't seem to find any dump file. I will use the Eclipse Memory Analyzer to analyze when i find the dump.

I also tried to set the option "-XX:HeapDumpPath=c:\memdump\bds.hprof", but no dump was created there.

Anyone got an idea of what i'm doing wrong? Thanks in advance

like image 662
Ikky Avatar asked Mar 09 '10 13:03

Ikky


3 Answers

It looks like your application is running on Windows. A Windows file path needs to be escaped with \. As per your example, -XX:HeapDumpPath should look like:

-XX:HeapDumpPath=c:\\memdump\\bds.hprof

Besides ‘-XX:+HeapDumpOnOutOfMemoryError’ there are several other options to capture heap dumps as well.

like image 137
Ram Lakshmanan Avatar answered Oct 19 '22 20:10

Ram Lakshmanan


I found that i could use VisualVM from SUN to get a heapdump, and see it live.

Easy solution

like image 1
Ikky Avatar answered Oct 19 '22 22:10

Ikky


It's in the working directory of the application (i.e. where you've started it). I'm not sure what happens if the process does not have the necessary privileges to do so. Probably, writing the dump would fail silently.

like image 1
sfussenegger Avatar answered Oct 19 '22 21:10

sfussenegger