Jump to: navigation, search

Difference between revisions of "MemoryAnalyzer/FAQ"

m (Problems Starting the Memory Analyzer)
m (java.lang.RuntimeException: No application id has been found.)
Line 8: Line 8:
 
The Memory Analyzer needs a '''Java 1.5''' VM to run (of course, heap dumps from JDK 1.4.2_12 on are supported).
 
The Memory Analyzer needs a '''Java 1.5''' VM to run (of course, heap dumps from JDK 1.4.2_12 on are supported).
 
If in doubt, provide the runtime VM on the command line:
 
If in doubt, provide the runtime VM on the command line:
<blockquote>MemoryAnalyzer.exe -vm &lt;path to 1.5 vm&gt;</blockquote>
+
<blockquote>MemoryAnalyzer.exe -vm &lt;path/to/java5/bin&gt;</blockquote>
  
Alternatively, edit the <code>MemoryAnalyzer.ini</code> to contain:
+
Alternatively, edit the <code>MemoryAnalyzer.ini</code> to contain (on <strong>two lines</strong>):
  
<blockquote>-vm<br/>
+
<blockquote><code>-vm<br/>
path/to/java/bin</blockquote>
+
path/to/java5/bin</code></blockquote>
  
 
(This error happens, because the MAT plug-in requires a JDK 1.5 via its manifest.mf file and the OSGi runtime dutifully does not activate the plug-in.)
 
(This error happens, because the MAT plug-in requires a JDK 1.5 via its manifest.mf file and the OSGi runtime dutifully does not activate the plug-in.)

Revision as of 05:31, 19 December 2008

Frequently Asked Questions

MemoryAnalyzer, Home Page, Forum

Problems Starting the Memory Analyzer

java.lang.RuntimeException: No application id has been found.

The Memory Analyzer needs a Java 1.5 VM to run (of course, heap dumps from JDK 1.4.2_12 on are supported). If in doubt, provide the runtime VM on the command line:

MemoryAnalyzer.exe -vm <path/to/java5/bin>

Alternatively, edit the MemoryAnalyzer.ini to contain (on two lines):

-vm
path/to/java5/bin

(This error happens, because the MAT plug-in requires a JDK 1.5 via its manifest.mf file and the OSGi runtime dutifully does not activate the plug-in.)

Out of Memory Error while Running the Memory Analyzer

Well, analyzing big heap dumps can also require more heap space. Give it some more memory (possible by running on a 64-bit machine):

MemoryAnalyzer.exe -vmargs -Xmx4g

Alternatively, edit the MemoryAnalyzer.ini to contain:

-vmargs
-Xmx2g

For more details, check out the section Running Eclipse in the Help Center. It also contains more details if you are running on Mac OS X.

If you are running the Memory Analyzer inside your Eclipse SDK, you need to edit the eclipse.ini file.

How to run on 64bit VM while the native SWT are 32bit

In short: if you run a 64bit VM, then all native parts also must be 64bit. But what if - like Motif on AIX - native SWT libraries are only available as 32bit version? One can still run the command line parsing on 64bit by executing the following command:

/usr/java5_64/jre/bin/java -jar plugins/org.eclipse.equinox.launcher_1.0.101.R34x_v20080819.jar -consoleLog -application org.eclipse.mat.api.parse path/to/dump.hprof org.eclipse.mat.api:suspects

Please make sure you point to the version of the Equinox Launcher available in your installation. This version changes regularly!

The org.eclipse.mat.api:suspects argument creates a ZIP file containing the leak suspect report. This argument is optional.

Problems Getting Heap Dumps

Error: Found instance segment but expected class segment

This error indicates an inconsistent heap dump: The data in the heap dump is written in various segments. In this case, an address expected in a class segment is written into a instance segment.

The problem has been reported in heap dumps generated by jmap on Linux and Solaris operation systems and jdk1.5.0_13 and below. Solution: use latest jdk/jmap version or use jconsole to write the heap dump (needs jdk6).

Error: Invalid heap dump file. Unsupported segment type 0 at position XZY

This almost always means the heap dumps has not been written properly by the Virtual Machine. The Memory Analyzer is not able to read the heap dump.

If you are able to read the dump with other tools, please file a bug report.