blob: d59d0126f744d33017c8c9e15c1396790c55f334 [file] [log] [blame]
<?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>