| <?xml version="1.0" encoding="UTF-8"?> |
| <!DOCTYPE html |
| PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| <html xml:lang="en-us" lang="en-us"> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> |
| <meta name="DC.Type" content="task"/> |
| <meta name="DC.Title" content="Acquiring Heap Dumps"/> |
| <meta name="copyright" content="Copyright (c) 2008, 2021 SAP AG and IBM Corporation. All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which accompanies this distribution, and is available at https://www.eclipse.org/legal/epl-2.0/ " type="primary"/> |
| <meta name="DC.Rights.Owner" content="Copyright (c) 2008, 2021 SAP AG and IBM Corporation. All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which accompanies this distribution, and is available at https://www.eclipse.org/legal/epl-2.0/ " type="primary"/> |
| <meta name="DC.Format" content="XHTML"/> |
| <meta name="DC.Identifier" content="task_acquiringheapdump"/> |
| <meta name="DC.Language" content="en-us"/> |
| <link rel="stylesheet" type="text/css" href="../styles/commonltr.css"/> |
| <title>Acquiring Heap Dumps</title> |
| </head> |
| <body id="task_acquiringheapdump"> |
| |
| |
| <h1 class="title topictitle1">Acquiring Heap Dumps</h1> |
| |
| |
| |
| <div class="body taskbody"> |
| <div class="section context"> |
| |
| |
| <p class="p"><strong class="ph b">HPROF Binary Heap Dumps</strong></p> |
| |
| <p class="p"><em class="ph i">Get Heap Dump on an OutOfMemoryError</em></p> |
| |
| <p class="p"> One can get a HPROF binary heap dump on an OutOfMemoryError for Sun JVM |
| (1.4.2_12 or higher and 1.5.0_07 or higher), Oracle JVMs, |
| OpenJDK JVMs, |
| HP-UX JVM (1.4.2_11 or |
| higher) and SAP JVM (since 1.5.0) by setting the following JVM |
| parameter:</p> |
| |
| <div class="p"> |
| <pre class="pre codeblock">-XX:+HeapDumpOnOutOfMemoryError</pre> |
| |
| </div> |
| |
| <p class="p">The heap dump is written to the work directory.</p> |
| |
| |
| <p class="p"><em class="ph i">Interactively Trigger a Heap Dump</em></p> |
| |
| <p class="p"> To get heap dump on demand one can add the following parameter to the JVM |
| and press CTRL + BREAK in the preferred moment:</p> |
| |
| <div class="p"> |
| <pre class="pre codeblock">-XX:+HeapDumpOnCtrlBreak</pre> |
| |
| </div> |
| |
| <p class="p"><em class="ph i">HPROF agent</em></p> |
| |
| <p class="p">To use the HPROF agent to generate a dump on the end of execution, or on SIGQUIT signal use the following |
| JVM parameter:</p> |
| |
| <div class="p"> |
| <pre class="pre codeblock">-agentlib:hprof=heap=dump,format=b</pre> |
| |
| </div> |
| |
| <p class="p"> Alternatively, other tools can be used to acquire a heap dump: |
| </p> |
| |
| <ul class="ul"> |
| <li class="li"> |
| <span class="keyword cmdname">jmap -dump:format=b,file=<filename.hprof> <pid></span> |
| </li> |
| |
| <li class="li">JConsole (see sample usage in <a class="xref" href="../gettingstarted/basictutorial.html">Basic Tutorial</a>)</li> |
| |
| <li class="li">Memory Analyzer (see bottom of page)</li> |
| |
| </ul> |
| |
| |
| |
| <p class="p"><strong class="ph b">System Dumps and Heap Dumps from IBM Virtual Machines </strong></p> |
| |
| <div class="p"> |
| Memory Analyzer can also read memory-related information from IBM system |
| dumps and from Portable Heap Dump (PHD) files. For this purpose one just |
| has to install the IBM DTFJ feature into Memory Analyzer. |
| Follow the <a class="xref" href="installDTFJ.html">IBM DTFJ feature installation instructions</a>. Once the DTFJ |
| feature is successfully installed, then |
| <span class="ph menucascade"><span class="ph uicontrol">File</span> > <span class="ph uicontrol">Open Heap Dump</span></span> |
| menu should also offer the following options for the file types: |
| |
| <ul class="ul"> |
| <li class="li">All known formats</li> |
| |
| <li class="li">HPROF binary heap dumps</li> |
| |
| <li class="li">IBM 1.4.2 SDFF<a name="fnsrc_1" href="#fntarg_1"><sup>1</sup></a></li> |
| |
| <li class="li">IBM Javadumps</li> |
| |
| <li class="li">IBM SDK for Java (J9) system dumps</li> |
| |
| <li class="li">IBM SDK for Java Portable Heap Dumps</li> |
| |
| </ul> |
| |
| </div> |
| |
| |
| <p class="p"> |
| For a comparison of dump types, see <a class="xref" href="http://www.ibm.com/developerworks/library/j-memoryanalyzer/#table1" target="_blank">Debugging from dumps</a>. |
| System dumps are simply operating system core dumps; therefore, they are a superset of portable heap dumps. |
| System dumps are far superior than PHDs, particularly for more accurate GC roots, thread-based analysis, and unlike PHDs, |
| system dumps contain memory contents like HPROFs. |
| </p> |
| |
| |
| <p class="p"> |
| Older versions of IBM Java (e.g. < 5.0SR12, < 6.0SR9) require running jextract on the operating system core dump |
| which produced a zip file that contained the core dump, XML or SDFF file, and shared libraries. The IBM DTFJ feature |
| still supports reading these jextracted zips although IBM DTFJ feature version 1.12.29003.201808011034 and later cannot read IBM Java 1.4.2 SDFF files, so MAT cannot read them either. |
| Dumps from newer versions of IBM Java do not require jextract for use in |
| MAT since DTFJ is able to directly read each supported operating system's core dump format. |
| Simply ensure that the operating system core dump file ends with the <strong class="ph b">.dmp</strong> suffix for visibility in the MAT Open Heap Dump selection. |
| It is also common to zip core dumps because they are so large and compress very well. If a core dump is compressed with <strong class="ph b">.zip</strong>, |
| the IBM DTFJ feature in MAT is able to decompress the ZIP file and read the core from inside (just like a jextracted zip). |
| The only significant downsides to system dumps over PHDs is that they are much larger, they usually take longer to produce, |
| they may be useless if they are manually taken in the middle of an exclusive event that manipulates the underlying Java heap |
| such as a garbage collection, and they sometimes require operating system configuration ( |
| <a class="xref" href="https://www.ibm.com/support/knowledgecenter/SSYKE2_8.0.0/com.ibm.java.80.doc/diag/problem_determination/linux_setup.html" target="_blank">Linux</a>, |
| <a class="xref" href="https://www.ibm.com/support/knowledgecenter/SSYKE2_8.0.0/com.ibm.java.80.doc/diag/problem_determination/aix_setup_full_core.html" target="_blank">AIX</a>) |
| to ensure non-truncation. |
| </p> |
| |
| |
| <div class="p"> |
| In recent versions of IBM Java (> 6.0.1), by default, when an OutOfMemoryError is thrown, IBM Java produces a system dump, PHD, |
| javacore, and Snap file on the first occurrence for that process (although often the core dump is suppressed by the default 0 |
| core ulimit on operating systems such as Linux). For the next three occurrences, it produces only a PHD, javacore, and Snap. |
| If you only plan to use system dumps, and you've configured your operating system correctly as per the links above (particularly |
| core and file ulimits), then you may disable PHD generation with -Xdump:heap:none. For versions of IBM Java older than 6.0.1, |
| you may switch from PHDs to system dumps using |
| <pre class="pre codeblock">-Xdump:system:events=systhrow,filter=java/lang/OutOfMemoryError,request=exclusive+prepwalk -Xdump:heap:none</pre> |
| |
| </div> |
| |
| |
| <p class="p"> |
| In addition to an OutOfMemoryError, system dumps may be produced using operating system tools (e.g. gcore in gdb for Linux, |
| gencore for AIX, Task Manager for Windows, SVCDUMP for z/OS, etc.), using the |
| <a class="xref" href="https://www.ibm.com/support/knowledgecenter/SSYKE2_8.0.0/com.ibm.java.api.80.doc/com.ibm.jvm.ras/index.html" target="_blank">IBM Java APIs</a>, |
| using the various options of <a class="xref" href="http://www.ibm.com/support/knowledgecenter/SSYKE2_8.0.0/com.ibm.java.lnx.80.doc/diag/tools/dump_agents.html" target="_blank">-Xdump</a>, |
| using <a class="xref" href="https://www.ibm.com/developerworks/community/groups/service/html/communityview?communityUuid=7d3dc078-131f-404c-8b4d-68b3b9ddd07a" target="_blank">Java Surgery</a>, |
| and more. |
| </p> |
| |
| |
| <p class="p"> |
| Versions of IBM Java older than IBM JDK 1.4.2 SR12, 5.0 SR8a and 6.0 SR2 are known to produce inaccurate GC root information. |
| </p> |
| |
| |
| |
| |
| <p class="p" id="task_acquiringheapdump__acquire"><strong class="ph b">Acquire Heap Dump from Memory Analyzer</strong></p> |
| |
| <p class="p"> |
| If the Java process from which the heap dump is to be acquired is on the |
| same machine as the Memory Analyzer, it is possible to acquire a heap dump |
| directly from the Memory Analyzer. Dumps acquired this way are directly |
| parsed and opened in the tool. |
| </p> |
| |
| |
| <p class="p">Acquiring the heap dump is VM specific. Memory Analyzer comes with |
| several so called heap dump providers - for OpenJDK, Oracle and Sun based VMs |
| (needs a OpenJDK, Oracle or Sun JDK |
| with jmap) and for IBM VMs (needs an IBM JDK or JRE). |
| Also extension points |
| are provided for adopters to plug-in their own heap dump providers. |
| </p> |
| |
| |
| <p class="p"> |
| To trigger a heap dump from Memory Analyzer open the |
| <span class="ph menucascade"><span class="ph uicontrol">File</span> > <span class="ph uicontrol">Acquire Heap Dump...</span></span> |
| menu item. |
| </p> |
| |
| |
| <p class="p">Depending on the concrete execution environment the pre-installed |
| heap dump |
| providers may work with their default settings and in this case a list of |
| running Java processes should appear: |
| To make selection easier, |
| the order of the Java processes can be altered by clicking on the column titles |
| for <span class="ph uicontrol">pid</span> or <span class="ph uicontrol">Heap Dump Provider</span>. |
| </p> |
| |
| <img class="image" src="../mimes/acquire.png" alt="Select a process to be dumped"/> |
| <p class="p"> |
| One can now select from which process a heap dump should be acquired, provide |
| a preferred |
| location for the heap dump and press |
| <span class="ph uicontrol">Finish</span> |
| to acquire the dump. Some of the heap |
| dump providers may allow (or require) additional parameters (e.g. type of |
| the heap dump) to be set. This can be done by using |
| <span class="ph menucascade"><span class="ph uicontrol">Next</span></span> |
| button to get to the |
| <span class="keyword wintitle">Configuring Heap Dump Provider Arguments</span> |
| page of the wizard. |
| </p> |
| |
| <p class="p"> |
| <em class="ph i">Configuring the Heap Dump Providers</em> |
| </p> |
| |
| <p class="p"> |
| If the process list is empty try to configure the available heap dump |
| providers. To do this |
| press |
| <span class="ph uicontrol">Configure...</span> |
| , select a matching provider from the list and click on it. |
| You can see |
| then what are the required settings and specify them. |
| <span class="ph menucascade"><span class="ph uicontrol">Next</span></span> |
| will then apply any changed settings, and |
| refresh the JVM list if any |
| settings have been changed. |
| <span class="ph menucascade"><span class="ph uicontrol">Prev</span></span> |
| will return to the |
| current JVM list without applying any changed |
| settings. To then apply the |
| changed settings |
| reenter and exit the |
| <span class="keyword wintitle">Configure Heap Dump Providers...</span> |
| page as follows: |
| <span class="ph menucascade"><span class="ph uicontrol">Configure...</span> > <span class="ph uicontrol">Next</span></span> |
| </p> |
| |
| <p class="p"> |
| If a process is selected before pressing |
| <span class="ph uicontrol">Configure...</span> |
| then the corresponding |
| dump provider will be selected on entering the |
| <span class="keyword wintitle">Configure Heap Dump Providers...</span> |
| page. |
| </p> |
| |
| <div class="p"> |
| <dl class="dl"> |
| |
| <dt class="dt dlterm" id="task_acquiringheapdump__1">HPROF jmap dump provider</dt> |
| |
| <dd class="dd"> |
| This provider uses the |
| <span class="keyword cmdname">jps</span> |
| command supplied with an OpenJDK or Oracle based JDK to list the |
| running JVMs on the system. The provider then uses the |
| <span class="keyword cmdname">jmap</span> |
| command to get the chosen |
| JVM to generate an HPROF dump. |
| As an alternative the provider can use the <span class="keyword cmdname">jcmd</span> |
| to both list running JVMs and to generate dumps. |
| This |
| provider requires a JDK (Java |
| development kit), not a JRE |
| (Java |
| runtime environment) for those commands. |
| |
| IBM JDKs do not |
| have |
| the |
| <span class="keyword cmdname">jps</span> |
| or |
| <span class="keyword cmdname">jmap</span> |
| commands. The commands on an OpenJ9 JDK may not work well enough |
| for |
| this provider to work with those JVMs. |
| </dd> |
| |
| |
| |
| <dt class="dt dlterm"><a name="task_acquiringheapdump__2"><!-- --></a>Attach API</dt> |
| |
| <dd class="dd"> |
| This uses the |
| <a class="xref" href="https://docs.oracle.com/javase/8/docs/jdk/api/attach/spec/com/sun/tools/attach/package-summary.html" target="_blank"> |
| <span class="keyword apiname">com.sun.tools.attach</span> |
| </a> |
| or |
| <a class="xref" href="https://www.ibm.com/support/knowledgecenter/en/SSYKE2_8.0.0/com.ibm.java.lnx.80.doc/user/attachapi.html" target="_blank"> |
| <span class="keyword apiname">com.ibm.tools.attach</span> |
| </a> |
| APIs to list the JVMs and then to attach to the chosen JVM to |
| generate a |
| dump. |
| The Attach API is supplied as part of IBM JDKs and |
| JREs, but is only |
| supplied as part of Oracle or OpenJDK JDKs |
| in |
| <samp class="ph codeph">tools.jar</samp> |
| and not as part of JREs. Therefore if Memory Analyzer is run with |
| an OpenJDK or Oracle JRE |
| then this dump provider will not be available. |
| The |
| <span class="keyword apiname">com.sun.tools.attach</span> |
| API is available on Oracle and OpenJDK JDKs, on OpenJ9 JDKs and |
| JREs |
| and IBM JDKs and JREs version Java 8 SR5 or later. |
| The |
| <span class="keyword apiname">com.ibm.tools.attach</span> |
| API is available on earlier IBM JDKs and JREs. |
| The Attach API dump |
| provider automatically uses whichever Attach API |
| is available, |
| and |
| loads |
| <samp class="ph codeph">tools.jar</samp> |
| if required. |
| The Attach API with Java 9 or later does not permit a Java process |
| to connect to itself, so MemoryAnalyzer cannot generate a dump of |
| itself using the Attach API dump provider. Use another dump provider instead. |
| </dd> |
| |
| |
| |
| <dt class="dt dlterm"><a name="task_acquiringheapdump__3"><!-- --></a>Attach API with helper JVM</dt> |
| |
| <dd class="dd"> |
| If Memory Analyzer is run with an OpenJDK or Oracle JRE then this dump |
| provider can be used with an OpenJDK or Oracle JDK by providing a path |
| to a |
| <span class="keyword cmdname">java</span> |
| executable. The dump provider will load the |
| <samp class="ph codeph">tools.jar</samp> |
| if required. |
| so that the |
| <span class="keyword apiname">com.sun.tools.attach</span> |
| API |
| is accessible. This provider can also be used to list JVMs |
| of a |
| different type from the JVM used to run Memory Analyzer. |
| For example |
| dumps from IBM JVMs can be generated by specifying a |
| path to |
| an IBM |
| JVM |
| <span class="keyword cmdname">java</span> |
| command even when Memory Analyzer is run with an OpenJDK or Oracle JVM. |
| <p class="p"> |
| If a path to a |
| <span class="keyword cmdname">jcmd</span> |
| executable is provided then this command will be used to |
| generate a list of running JVMs and to generate the dumps. |
| </p> |
| |
| </dd> |
| |
| |
| </dl> |
| |
| </div> |
| |
| <p class="p"> |
| <em class="ph i">Options</em> |
| </p> |
| |
| <div class="p"> |
| <dl class="dl"> |
| |
| <dt class="dthd"><strong>Dump Type</strong></dt> |
| |
| |
| |
| <dt class="dt dlterm">System</dt> |
| |
| <dd class="dd"> |
| These process core dumps are generated using the |
| <span class="keyword apiname">com.ibm.jvm.Dump.SystemDump()</span> |
| method |
| called by an agent library generated and loaded into the |
| target JVM by |
| Memory Analyzer. |
| These dumps can be generated by IBM |
| and |
| OpenJ9 JVMs. |
| </dd> |
| |
| |
| |
| <dt class="dt dlterm">Heap</dt> |
| |
| <dd class="dd"> |
| These Portable Heap Dumps are generated using the |
| <span class="keyword apiname">com.ibm.jvm.Dump.HeapDump()</span> |
| method |
| called by an agent library generated and loaded into the |
| target JVM by |
| Memory Analyzer. |
| These dumps can be generated by IBM |
| and |
| OpenJ9 JVMs. |
| </dd> |
| |
| |
| |
| <dt class="dt dlterm">Java</dt> |
| |
| <dd class="dd"> |
| These Javacore dumps are generated using the |
| <span class="keyword apiname">com.ibm.jvm.Dump.JavaDump()</span> |
| method |
| called by an agent library generated and loaded into the |
| target JVM by |
| Memory Analyzer. |
| These dumps can be generated by IBM |
| and OpenJ9 |
| JVMs. |
| </dd> |
| |
| |
| |
| <dt class="dt dlterm">HPROF</dt> |
| |
| <dd class="dd"> |
| These HPROF dumps are generated using the |
| <span class="keyword apiname">com.sun.management:type=HotSpotDiagnostic</span> |
| MXBean called in an agent library generated and loaded into the |
| target JVM by Memory Analyzer. |
| These dumps can be generated by |
| Oracle and |
| OpenJDK JVMs. |
| </dd> |
| |
| |
| </dl> |
| |
| <dl class="dl"> |
| |
| <dt class="dthd"><strong>Other options</strong></dt> |
| |
| |
| |
| <dt class="dt dlterm">compress</dt> |
| |
| <dd class="dd"> |
| <p class="p"> |
| System dumps can be processed using |
| <a class="xref" href="https://www.ibm.com/support/knowledgecenter/en/SSYKE2_8.0.0/com.ibm.java.lnx.80.doc/diag/tools/dump_viewer_dtfjview/jextract.html" target="_blank"> |
| <span class="keyword cmdname">jextract</span> |
| </a> |
| which compressed the dump and |
| also adds extra system information so |
| that the dump could be moved to |
| another machine. |
| </p> |
| |
| <p class="p"> |
| Portable Heap Dump |
| (PHD) files generated with the Heap option can be compressed using |
| the gzip compressor |
| to reduce |
| the file size. |
| </p> |
| |
| <p class="p"> |
| HPROF files can be compressed using |
| the Gzip compressor to reduce the file size. |
| A compressed file may take longer to parse in Memory Analyzer, and |
| running queries and reports and reading fields from objects may take |
| longer. |
| </p> |
| |
| </dd> |
| |
| |
| |
| <dt class="dt dlterm">chunked</dt> |
| |
| <dd class="dd">OpenJDK 15 and later can generate compressed HPROF files by |
| using the <span class="keyword cmdname">jcmd <pid> GC.heap_dump -gz=1</span> |
| which compresses the HPROF file using gzip, but in chunks so |
| that random access to the file is quicker. Memory Analyzer version 1.12 |
| and later can read this format, and with this option and |
| <span class="keyword option">compress</span> the HPROF dump provider |
| generates HPROF files compressed in chunks, for faster read access |
| than normal gzip compressed files.</dd> |
| |
| |
| |
| <dt class="dt dlterm">live</dt> |
| |
| <dd class="dd">On IBM JVMs this forces a garbage collection before a dump is |
| taken. This could affect |
| the performance of the program running on |
| the target JVM, |
| but may reduce the size of PHD Heap dumps. |
| On Oracle and |
| OpenJDK JVMs this |
| dumps only live objects into the HPROF file and |
| should reduce its |
| size. |
| By default, |
| Memory Analyzer removes the |
| non-live objects from |
| the dump as it indexes |
| the dump and builds the |
| snapshot, and puts |
| information about those objects |
| in the unreachable |
| objects histogram. |
| If this histogram is used or the 'keep |
| unreachable objects' |
| option is |
| set then the live option should not be |
| set as it will remove |
| required information.</dd> |
| |
| |
| |
| <dt class="dt dlterm">listattach</dt> |
| |
| <dd class="dd">This is used when listing JVMs using the Attach API. The dump |
| provider then attaches to each |
| running JVM in the list and extracts |
| more information to give a better |
| description. This can take a |
| little longer, so if the list operation |
| is cancelled then this |
| option is disabled so the next listing |
| will be faster. The option |
| can be reenabled if required.</dd> |
| |
| |
| |
| <dt class="dt dlterm">dumpdir</dt> |
| |
| <dd class="dd"> |
| IBM JVMs produce dumps in a directory specified by the target JVM, |
| not by Memory Analyzer. |
| Memory Analyzer needs to find the dump it |
| caused to be generated, and |
| looks in the |
| target JVM |
| <samp class="ph codeph">user.dir</samp> |
| for the dump files. If this is not the right place then Memory |
| Analyzer will not find the |
| generated dump, so the user would have to |
| find it manually afterwards. If the |
| user knows |
| where the target JVM |
| will produce dumps then it can be entered using |
| this option. |
| </dd> |
| |
| |
| |
| <dt class="dt dlterm">dumptemplate</dt> |
| |
| <dd class="dd"> |
| This gives an example file name to be used for the dump. The time |
| and date is inserted into the name using |
| substitution variable 0, |
| for example |
| <samp class="ph codeph">{0,date,yyyyMMdd.HHmmss}</samp> |
| . |
| The process identifier is inserted using substitution variable 1, |
| for |
| example |
| <samp class="ph codeph">{1,number,0}</samp> |
| . |
| The instance number, used to make the dump file unique, is |
| inserted |
| using substitution variable 2, for example |
| <samp class="ph codeph">{2,number,0000}</samp> |
| . The extra 0000 is a standard MessageFormat modifier giving the |
| minimum |
| number of digits to use. |
| </dd> |
| |
| |
| </dl> |
| |
| </div> |
| |
| <p class="p" id="task_acquiringheapdump__multiple"><strong class="ph b">Multiple snapshots in one heap dump</strong></p> |
| |
| <div class="p"> |
| Occasionally heap dumps files can be generated which contain multiple heap dumps snapshots. |
| If an HPROF dump is generated using |
| <pre class="pre codeblock">-agentlib:hprof=heap=dump,format=b</pre> |
| |
| then if a heap dump is triggered multiple times all the heap dumps will be written to one file. |
| An IBM z/OS system dump can contain data from multiple address spaces and processes. |
| It is therefore possible that the dump file contains heap dump snapshots from multiple Java runtimes. |
| </div> |
| |
| <p class="p"> |
| Memory Analyzer 1.2 and earlier handled this situation by choosing the first heap dump snapshot found unless another |
| was selected via an environment variable or MAT DTFJ configuration option. |
| </p> |
| |
| <p class="p"> |
| Memory Analyzer 1.3 handles this situation by detecting the multiple dumps, then presenting a dialog |
| for the user to select the required snapshot. |
| </p> |
| |
| <img class="image" src="../mimes/multiple_snapshots.png" alt="Choose a snapshot to be analyzed"/> |
| <p class="p"> |
| The index files generated have a component in the file name from the snapshot identifier, so the index |
| files from each snapshot can be distinguished. |
| This means that multiple snapshots from one heap dump file can be examined in Memory Analyzer |
| simultaneously. |
| The heap dump history for the file remembers the last snapshot selected for that file, though when |
| the snapshot is reopened via the history the index file is also shown in the history. |
| To open another snapshot in the dump, close the first snapshot, then reopen the heap dump file using the File menu and |
| another snapshot can be chosen to be parsed. |
| The first snapshot can then be reopened using the index file in the history, and both snapshots can |
| be viewed at once. |
| </p> |
| |
| |
| |
| <p class="p"> |
| <strong class="ph b">Summary</strong> |
| </p> |
| |
| <p class="p">The following table shows the availability of VM options and tools |
| on the various platforms:</p> |
| |
| |
| <div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" class="table" frame="border" border="1" rules="all"> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <thead class="thead" align="left"> |
| <tr class="row"> |
| <th class="entry" valign="top" width="5.88235294117647%" id="d11625e611">Vendor</th> |
| |
| <th class="entry" valign="top" width="11.76470588235294%" id="d11625e614">Release</th> |
| |
| <th class="entry" colspan="3" valign="top" id="d11625e617">VM |
| Parameter</th> |
| |
| <th class="entry" colspan="3" valign="top" id="d11625e620">JVM |
| Tools</th> |
| |
| <th class="entry" valign="top" width="5.88235294117647%" id="d11625e623">SAP Tool</th> |
| |
| <th class="entry" valign="top" width="11.76470588235294%" id="d11625e627">Attach</th> |
| |
| <th class="entry" valign="top" width="11.76470588235294%" id="d11625e630">MAT</th> |
| |
| </tr> |
| |
| </thead> |
| |
| <tbody class="tbody"> |
| <tr class="row"> |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e611 ">Â </td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e614 ">Â </td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e617 ">On out of memory</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e617 ">On Ctrl+Break</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e617 ">Agent</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e620 ">JMap</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e620 ">JCmd</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e620 ">JConsole</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e623 ">JVMMon</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e627 ">API</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e630 ">acquire heap dump</td> |
| |
| </tr> |
| |
| <tr class="row"> |
| <td class="entry" rowspan="3" valign="top" width="5.88235294117647%" headers="d11625e611 ">Sun, HP</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e614 ">1.4.2_12</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e617 ">Yes</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e617 ">Yes</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e617 ">Yes</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e620 ">No</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e620 ">No</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e620 ">No</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e623 ">No</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e627 ">Â </td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e630 ">No</td> |
| |
| </tr> |
| |
| <tr class="row"> |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e614 ">1.5.0_07</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e617 ">Yes</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e617 ">Yes (Since 1.5.0_15)</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e617 ">Yes</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e620 ">Yes (Only Solaris and Linux)</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e620 ">No</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e620 ">No</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e623 ">No</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e627 ">com.sun.tools.attach</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e630 ">Yes (Only Solaris and Linux)</td> |
| |
| </tr> |
| |
| <tr class="row"> |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e614 ">1.6.0_00</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e617 ">Yes</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e617 ">No</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e617 ">Yes</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e620 ">Yes</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e620 ">No</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e620 ">Yes</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e623 ">No</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e627 ">com.sun.tools.attach</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e630 ">Yes</td> |
| |
| </tr> |
| |
| <tr class="row"> |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e611 ">Oracle, OpenJDK, HP</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e614 ">1.7.0</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e617 ">Yes</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e617 ">No</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e617 ">Yes</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e620 ">Yes</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e620 ">Yes</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e620 ">Yes</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e623 ">Â </td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e627 ">com.sun.tools.attach</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e630 ">Yes</td> |
| |
| </tr> |
| |
| <tr class="row"> |
| <td class="entry" rowspan="3" valign="top" width="5.88235294117647%" headers="d11625e611 ">Oracle, OpenJDK, HP, Amazon Corretto</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e614 ">1.8.0</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e617 ">Yes</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e617 ">No</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e617 ">Yes</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e620 ">Yes</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e620 ">Yes</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e620 ">Yes</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e623 ">Â </td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e627 ">com.sun.tools.attach</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e630 ">Yes</td> |
| |
| </tr> |
| |
| <tr class="row"> |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e614 ">11</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e617 ">Yes</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e617 ">No</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e617 ">No</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e620 ">Yes</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e620 ">Yes</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e620 ">Yes</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e623 ">Â </td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e627 ">com.sun.tools.attach</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e630 ">Yes</td> |
| |
| </tr> |
| |
| <tr class="row"> |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e614 ">15</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e617 ">Yes</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e617 ">No</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e617 ">No</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e620 ">Yes</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e620 ">Yes</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e620 ">Yes</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e623 ">Â </td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e627 ">com.sun.tools.attach</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e630 ">Yes</td> |
| |
| </tr> |
| |
| <tr class="row"> |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e611 ">SAP</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e614 ">Any 1.5.0</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e617 ">Yes</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e617 ">Yes</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e617 ">Yes</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e620 ">Yes (Only Solaris and Linux)</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e620 ">No</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e620 ">No</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e623 ">Yes</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e627 ">Â </td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e630 ">Â </td> |
| |
| </tr> |
| |
| <tr class="row"> |
| <td class="entry" rowspan="7" valign="top" width="5.88235294117647%" headers="d11625e611 ">IBM</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e614 ">1.4.2 SR12</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e617 ">Yes</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e617 ">Yes</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e617 ">No</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e620 ">No</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e620 ">No</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e620 ">No</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e623 ">No</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e627 ">Â </td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e630 ">No</td> |
| |
| </tr> |
| |
| <tr class="row"> |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e614 ">1.5.0 SR8a</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e617 ">Yes</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e617 ">Yes</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e617 ">No</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e620 ">No</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e620 ">No</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e620 ">No</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e623 ">No</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e627 ">com.ibm.tools.attach</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e630 ">No</td> |
| |
| </tr> |
| |
| <tr class="row"> |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e614 ">1.6.0 SR2</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e617 ">Yes</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e617 ">Yes</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e617 ">No</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e620 ">No</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e620 ">No</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e620 ">No</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e623 ">No</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e627 ">com.ibm.tools.attach</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e630 ">No</td> |
| |
| </tr> |
| |
| <tr class="row"> |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e614 ">1.6.0 SR6</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e617 ">Yes</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e617 ">Yes</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e617 ">No</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e620 ">No</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e620 ">No</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e620 ">No</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e623 ">No</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e627 ">com.ibm.tools.attach</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e630 ">Yes</td> |
| |
| </tr> |
| |
| <tr class="row"> |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e614 ">1.7.0</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e617 ">Yes</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e617 ">Yes</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e617 ">No</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e620 ">No</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e620 ">No</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e620 ">No</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e623 ">No</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e627 ">com.ibm.tools.attach</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e630 ">Yes</td> |
| |
| </tr> |
| |
| <tr class="row"> |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e614 ">1.8.0</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e617 ">Yes</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e617 ">Yes</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e617 ">No</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e620 ">No</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e620 ">No</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e620 ">No</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e623 ">No</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e627 ">com.ibm.tools.attach</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e630 ">Yes</td> |
| |
| </tr> |
| |
| <tr class="row"> |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e614 ">1.8.0 SR5</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e617 ">Yes</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e617 ">Yes</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e617 ">No</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e620 ">No</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e620 ">No</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e620 ">Yes (PHD only?)</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e623 ">No</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e627 ">com.sun.tools.attach</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e630 ">Yes</td> |
| |
| </tr> |
| |
| <tr class="row"> |
| <td class="entry" rowspan="2" valign="top" width="5.88235294117647%" headers="d11625e611 ">OpenJ9</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e614 ">1.8.0</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e617 ">Yes</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e617 ">Yes</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e617 ">No</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e620 ">Yes</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e620 ">Yes</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e620 ">Yes (PHD only)</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e623 ">No</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e627 ">com.sun.tools.attach</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e630 ">Yes</td> |
| |
| </tr> |
| |
| <tr class="row"> |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e614 ">11</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e617 ">Yes</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e617 ">Yes</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e617 ">No</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e620 ">Yes</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e620 ">Yes</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e620 ">Yes (PHD only)</td> |
| |
| <td class="entry" valign="top" width="5.88235294117647%" headers="d11625e623 ">No</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e627 ">com.sun.tools.attach</td> |
| |
| <td class="entry" valign="top" width="11.76470588235294%" headers="d11625e630 ">Yes</td> |
| |
| </tr> |
| |
| </tbody> |
| |
| </table> |
| </div> |
| |
| </div> |
| |
| </div> |
| |
| <div class="fn"><a name="fntarg_1" href="#fnsrc_1"><sup>1</sup></a> IBM DTFJ feature versions >= 1.12.29003.201808011034 do not have this option</div> |
| </body> |
| </html> |