How to generate a heap dump
Sometimes you may see that Stash is holding onto a chunk of memory over a period of time. In such a situation, it is useful to find out what is stacking up in the memory by analysing the heap dump.
Xmx is only a temporary band-aid. As stated in Scaling Stash, running Stash with the default
Xmx of 768 MB should be fine for most of our customers.
Automatically Generating a Heap Dump when Stash Hits OutOfMemory Error
Typically, we would like to analyse the heap dump produced when Stash crashed from an OutOfMemory Error. For this, you can add additional JVM parameters like below:
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=<path to this heap dump file>
If you do not set the
HeapDumpPath parameter, by default the heap dump will be saved in the folder where Tomcat is run from.
Please refer to How to debug Out of Memory Heap Space for more details on this.
Manually Generating a Heap Dump when Stash Stops Responding
It is also possible to get a heap dump manually using a JDK bundled tool called jmap, although we recommend that you use the automatic method above for best results.
For Linux/Solaris-based Operating Systems:
Execute the following command on Linux OS:
$JAVA_HOME/bin/jmap -dump:format=b,file=heap.bin <pid>
Find your Stash process ID (see below) and then execute the command below on a Windows command line:
%JAVA_HOME%\bin\jmap -dump:format=b,file=heap.bin <pid>
To find out the process ID for your Java process in Windows, you can use Process Explorer from Microsoft.