<?xml version="1.0" encoding="UTF-8"?> | |
<!-- | |
Copyright (c) 2019,2021 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/ | |
SPDX-License-Identifier: EPL-2.0 | |
Contributors: | |
Andrew Johnson/IBM - initial API and implementation | |
--> | |
<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd" > | |
<task id="task_batch" xml:lang="en-us"> | |
<title>Batch mode</title> | |
<prolog> | |
<copyright> | |
<copyryear year="2019"></copyryear> | |
<copyryear year="2021"></copyryear> | |
<copyrholder> | |
Copyright (c) 2019,2021 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/ | |
</copyrholder> | |
</copyright> | |
</prolog> | |
<taskbody> | |
<context> | |
<p>Memory Analyzer can be operated in batch mode to process heap dumps | |
without user input.</p> | |
</context> | |
<steps> | |
<step> | |
<note>On Windows, use <filepath><cmdname>.\mat\ParseHeapDump.bat</cmdname></filepath> instead of <filepath><cmdname>./mat/ParseHeapDump.sh</cmdname></filepath></note> | |
<cmd>Run <filepath><cmdname>./mat/ParseHeapDump.sh</cmdname></filepath> <filepath><varname>myheapdump.hprof</varname></filepath> <parmname>org.eclipse.mat.api:suspects</parmname> | |
</cmd> | |
<choices> | |
<choice>For a simple suspects report use <parmname>org.eclipse.mat.api:suspects</parmname> | |
See <xref type="task" href="runningleaksuspectreport.dita#task_runningleaksuspectreport">running leak suspect report</xref> for more details.</choice> | |
<choice>For an overview report use <parmname>org.eclipse.mat.api:overview</parmname> | |
This report is included at the beginning of the leak suspects report | |
and shows: | |
<ul> | |
<li>Heap Dump Overview</li> | |
<li>System Properties</li> | |
<li>Thread Overview</li> | |
<li>Top Consumers</li> | |
<li>Class Histogram</li> | |
</ul></choice> | |
<choice>For a report on memory usage by component use <parmname>org.eclipse.mat.api:top_components</parmname> | |
See <xref type="reference" href="../reference/inspections/component_report.dita">Component report</xref> for more details | |
of the report run on each of the top components by memory usage.</choice> | |
<choice>To compare two heap dumps use <filepath><cmdname>./mat/ParseHeapDump.sh</cmdname></filepath> <varname>myheapdump.hprof</varname> <option>-snapshot2=</option><varname>myheapdump2.hprof</varname> <parmname>org.eclipse.mat.api:compare</parmname></choice> | |
<choice>To compare two heap dumps for memory leaks with a leak suspects report use <filepath><cmdname>./mat/ParseHeapDump.sh</cmdname></filepath> <varname>myheapdump.hprof</varname> <option>-baseline=</option><varname>myheapdump2.hprof</varname> <parmname>org.eclipse.mat.api:suspects2</parmname> | |
See <xref type="task" href="runningleaksuspectreport.dita#task_runningleaksuspectreport/compare">running leak suspect report by snapshot comparison</xref> for more details.</choice> | |
<choice>To export a new copy of the heap dump with redactions use a command like | |
<codeblock> | |
<filepath><cmdname>./mat/ParseHeapDump.sh</cmdname></filepath> | |
<filepath><varname>myheapdump.hprof</varname></filepath> | |
<option>-output=</option><filepath><varname>myheapdump2.hprof</varname></filepath> | |
<option>-redact=</option><parmname>BASIC</parmname> | |
<option>-map=</option><filepath><varname>myheapdump2.map</varname></filepath> | |
<parmname>org.eclipse.mat.hprof:export</parmname> | |
</codeblock> | |
See <xref type="task" href="exportdump.dita">export heap dump</xref> for more details. | |
</choice> | |
<choice>To run a single query on a heap dump and produce an HTML report use <codeph><filepath><cmdname>./mat/ParseHeapDump.sh</cmdname></filepath> <filepath><varname>myheapdump.hprof</varname></filepath> <option>-command=</option><varname>histogram</varname> <parmname>org.eclipse.mat.api:query</parmname></codeph> | |
See <xref type="reference" href="../reference/inspections/query_report.dita">Query Report</xref> for more details.</choice> | |
</choices> | |
</step> | |
<step> | |
<cmd>Choose additional options to control the parse and report generation.</cmd> | |
<info> | |
Command line options controlling the parse. | |
</info> | |
<substeps> | |
<substep> | |
<cmd> | |
<option>-keep_unreachable_objects</option> means that all | |
objects are retained in the snapshot, even if they are not reachable from | |
an ordinary GC root.</cmd> | |
</substep> | |
<substep> | |
<cmd> | |
<option>-snapshot_identifier=</option><varname>identifier</varname> | |
Selects one snapshot when there is the choice of several in the heap dump file. | |
For HPROF files this might be of the form <userinput>#1</userinput> or | |
<userinput>#2</userinput>. | |
For DTFJ system dump files this might be of the form | |
<userinput><varname>Address space ID</varname>.<varname>Process ID</varname>.<varname>Runtime ID</varname></userinput>. | |
If there are | |
<xref format="dita" href="acquiringheapdump.dita#task_acquiringheapdump/multiple"> | |
multiple snapshots</xref> in a heap dump file and a specific snapshot is not | |
selected then the parse will fail with a | |
<xref href="../doc/org/eclipse/mat/snapshot/MultipleSnapshotsException.html" format="html"><systemoutput><apiname>org.eclipse.mat.snapshot.MultipleSnapshotsException</apiname></systemoutput></xref> | |
which will list appropriate possible snapshot identifiers to use with this | |
option. | |
</cmd> | |
</substep> | |
<substep id="discard"> | |
<note>Experimental</note> | |
<cmd><option>-discard_ratio=</option><varname>percentage</varname>. | |
Option to discard a fraction of the objects from huge dumps. | |
</cmd> | |
<info>See <xref format="dita" href="configure_mat.dita#task_configure_mat/discard">discard configuration</xref> | |
for an explanation of these discard options.</info> | |
</substep> | |
<substep> | |
<note>Experimental</note> | |
<cmd><option>-discard_pattern=</option><varname>regex</varname>. | |
A regular expression matching the class names of objects to be discarded. | |
</cmd> | |
</substep> | |
<substep> | |
<note>Experimental</note> | |
<cmd><option>-discard_offset=</option><varname>offset value</varname>. | |
Controls which particular objects are discarded. | |
</cmd> | |
</substep> | |
<substep> | |
<note>Experimental</note> | |
<cmd><option>-discard_seed=</option><varname>random number generator seed</varname>. | |
Controls which particular objects are discarded. | |
</cmd> | |
</substep> | |
<substep id="report_options"> | |
<cmd>Other report options</cmd> | |
<stepxmp> | |
<p>Other parameters controlling output include the following:</p> | |
<simpletable> | |
<sthead> | |
<stentry>Argument</stentry> | |
<stentry>Description</stentry> | |
</sthead> | |
<strow> | |
<stentry><option>-limit=</option><varname>number of entries</varname></stentry> | |
<stentry>Controls the number of entries generated in an output table. | |
See <xref href="../doc/org/eclipse/mat/report/Params.Rendering.html#LIMIT" format="html"><apiname>org.eclipse.mat.report.Params.Rendering.LIMIT</apiname></xref> | |
</stentry> | |
</strow> | |
<strow> | |
<stentry><option>-format=</option><varname>type of output</varname></stentry> | |
<stentry>Controls the type of the output (HTML, CSV, or TXT). | |
See <xref href="../doc/org/eclipse/mat/report/Params.html#FORMAT" format="html"><apiname>org.eclipse.mat.report.Params.FORMAT</apiname></xref> | |
</stentry> | |
</strow> | |
<strow> | |
<stentry><option>-html.show_table_headings</option></stentry> | |
<stentry>Controls whether table headings should be shown for tables. | |
See <xref href="../doc/org/eclipse/mat/report/Params.Html.html#SHOW_TABLE_HEADER" format="html"><apiname>org.eclipse.mat.report.Params.Html.SHOW_TABLE_HEADER</apiname></xref> | |
</stentry> | |
</strow> | |
<strow> | |
<stentry><option>-html.show_totals</option></stentry> | |
<stentry>Controls whether totals should be shown for tables. | |
See <xref href="../doc/org/eclipse/mat/report/Params.Html.html#SHOW_TOTALS" format="html"><apiname>org.eclipse.mat.report.Params.Html.SHOW_TOTALS</apiname></xref> | |
</stentry> | |
</strow> | |
</simpletable> | |
</stepxmp> | |
</substep> | |
</substeps> | |
<stepresult> | |
<msgblock> | |
Task: Parsing myheapdump.hprof | |
[Task: Parsing .\Downloads\myheapdump.hprof | |
[ | |
Subtask: Scanning .\Downloads\myheapdump.hprof | |
[................. | |
[INFO] Detected compressed references, because with uncompressed 64-bit references the array at 0x5c4bd4258 would overlap the array at 0x5c4bd4230 | |
[.................... | |
[INFO] Wrote threads call stacks to .\Downloads\myheapdump.threads | |
[.................... | |
[INFO] Heap .\Downloads\myheapdump.hprof contains 116,716 objects | |
[.................... | |
Subtask: Extracting objects from .\Downloads\myheapdump.hprof | |
[...................................................................................Task: Removing unreachable objects | |
[ | |
Subtask: Searching for unreachable objects | |
[ | |
Subtask: Marking reachable objects | |
[. | |
Subtask: Re-indexing objects | |
[.. | |
Subtask: Re-indexing classes | |
[... | |
Subtask: Writing .\Downloads\myheapdump.idx.index | |
[.... | |
Subtask: Writing .\Downloads\myheapdump.o2c.index | |
[..... | |
Subtask: Writing .\Downloads\myheapdump.a2s.index | |
[...... | |
Subtask: Re-indexing outbound index | |
[....... | |
Subtask: Writing .\Downloads\myheapdump.inbound.index | |
[........ | |
Subtask: Writing .\Downloads\myheapdump.outbound.index | |
[......... | |
Subtask: Writing .\Downloads\myheapdump.o2hprof.index | |
[.........Task: Calculating Dominator Tree | |
[ | |
Subtask: Dominator Tree calculation | |
[ | |
Subtask: Depth-first search | |
[.................... | |
Subtask: Computing dominators | |
[.............................................. | |
Subtask: Calculate retained sizes | |
[............................................................ | |
Subtask: Create dominators index file | |
[................................................................................] | |
Subtask: Test 'Heap Dump Overview' of section 'System Overview' | |
[ | |
Subtask: Test 'System Properties' of section 'System Overview' | |
[ | |
Subtask: Extracting Key Value Pairs... | |
[ | |
Subtask: Test 'Thread Overview' of section 'System Overview' | |
[ | |
Subtask: Searching Threads... | |
[ | |
Subtask: Test 'Top Consumers' of section 'System Overview' | |
[ | |
Subtask: Creating histogram | |
[ | |
Subtask: Grouping by package | |
[ | |
Subtask: Test 'Biggest Objects (Overview)' of section 'Top Consumers' | |
[ | |
Subtask: Test 'Biggest Objects' of section 'Top Consumers' | |
[ | |
Subtask: Test 'Biggest Top-Level Dominator Classes (Overview)' of section 'Top Consumers' | |
[ | |
Subtask: Test 'Biggest Top-Level Dominator Classes' of section 'Top Consumers' | |
[ | |
Subtask: Test 'Biggest Top-Level Dominator Class Loaders (Overview)' of section 'Top Consumers' | |
[ | |
Subtask: Test 'Biggest Top-Level Dominator Class Loaders' of section 'Top Consumers' | |
[ | |
Subtask: Test 'Biggest Top-Level Dominator Packages' of section 'Top Consumers' | |
[ | |
Subtask: Test 'Class Histogram' of section 'System Overview' | |
[ | |
Subtask: Test 'Leaks' of section 'Leak Suspects' | |
[ | |
Subtask: Finding problem suspects | |
[ | |
Subtask: Searching suspicious single objects ... | |
[ | |
Subtask: Searching suspicious groups of objects ... | |
[ | |
Subtask: building histogram | |
[ | |
Subtask: Preparing results | |
[ | |
Subtask: building histogram | |
[ | |
Subtask: building histogram | |
[ | |
Subtask: Finding paths | |
[ | |
Subtask: Test 'Overview' of section 'Leaks' | |
[ | |
Subtask: Test 'Problem Suspect 1' of section 'Leaks' | |
[ | |
Subtask: Test 'Description' of section 'Problem Suspect 1' | |
[ | |
Subtask: Test 'Shortest Paths To the Accumulation Point' of section 'Problem Suspect 1' | |
[ | |
Subtask: Test 'Shortest Paths To the Accumulation Point' of section 'Problem Suspect 1' | |
[ | |
Subtask: Test 'Accumulated Objects in Dominator Tree' of section 'Problem Suspect 1' | |
[ | |
Subtask: Test 'Accumulated Objects in Dominator Tree' of section 'Problem Suspect 1' | |
[ | |
Subtask: Test 'Accumulated Objects by Class in Dominator Tree' of section 'Problem Suspect 1' | |
[ | |
Subtask: Test 'Accumulated Objects by Class in Dominator Tree' of section 'Problem Suspect 1' | |
[ | |
Subtask: Test 'All Accumulated Objects by Class' of section 'Problem Suspect 1' | |
[ | |
Subtask: Test 'All Accumulated Objects by Class' of section 'Problem Suspect 1' | |
[] | |
</msgblock> | |
</stepresult> | |
</step> | |
<step> | |
<cmd> | |
Unzip the report <filepath><varname>myheapdump_Leak_Suspects.zip</varname></filepath> | |
</cmd> | |
</step> | |
<step> | |
<cmd> | |
View the <filepath><parmname>index.html</parmname></filepath> | |
</cmd> | |
</step> | |
</steps> | |
<result> | |
<p>The result is a HTML report.</p> | |
</result> | |
</taskbody> | |
</task> |