title: Location of Java dump heap file when using jconsole?
body: <p>Well this is embarrassing ...</p>
  
  <p>I'm starting to play with the Eclipse Memory Analyzer to look for Java memory leaks on a Windows box.  Step 1 is to obtain a heap dump file.  To do this I start my Java (javaw.exe) process from within Eclipse and connect to it with jconsole.  Then on the jconsole MBeans tab I click the dumpHeap button.  The first time I did this, I saw a pop-up saying it had created the heap dump file, but not giving its name or location.  Now whenever I do a dumpHeap again while connected to a different javaw.exe process, jconsole says:</p>
  
  <pre><code>Problem invoking dumpHeap : java.io.IOException: File exists
  </code></pre>
  
  <p>and of course doesn't give its name or path.  Where could it be?</p>
  
  <p>I've searched my C: drive (using cygwin command line tools) for files containing "hprof" or "java_pid" or "heapdump" and didn't find anything plausible.  I've even used the Windows search to look for all files in my Eclipse workspace that have changed in the last day.</p>
  
  <p>I'm using the Sun Java 1.6 JVM, and don't have -XX:HeapDumpPath set.</p>
  
  <p><strong>Update (28 April 2010):</strong> My original heap file location must have been determined by jconsole, the tool I triggered the heap dump from.  The JVM's heap dump location must apply only to heap dumps it triggers (eg, on an OutOfMemoryException).</p>
  
  <p>Matt B's suggestion to use jvisualvm nicely solves my problem by pointing me to a far more useful replacement for the old jconsole.  It has a nice memory profiler that shows which types of objects are most numerous and hold the most memory.  And it has a monitor that shows actual memory use over time.  When you ask it for a heap dump, it tells you the file name even!  The Eclipse Memory Analyzer gives you full details.  </p>