简体   繁体   中英

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

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

Easy solution

It's in the working directory of the application (ie 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.

are you sure that ANT is the process with the OOME ? It may be a process started by ANT.

Add "-debug" to the ANT_OPTS for debugging information.

Are you seeing the targets being printed out during the execution?

You can also fork the various processes started by ant ( will slow things down but may help isolate the culprit )

Lastly, maybe you just need more memory than the default. Add:

-Xms256m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=256m

to the ANT_OPTS

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.

嗯...... java.io.tmpdir指向的地方怎么样?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM