https://help.eclipse.org/latest/index.jsp?topic=%2Forg.eclipse.mat.ui.help%2Ftasks%2Fbatch.html&cp%3D54_3_14
Memory Analyzer can be operated in batch mode to process heap dumps without user input.
-
Note: On Windows, use .\mat\ParseHeapDump.bat instead of ./mat/ParseHeapDump.sh
Run ./mat/ParseHeapDump.sh myheapdump.hprof org.eclipse.mat.api:suspects
- Choose additional options to control the parse and report generation.
Command line options controlling the parse.
- -keep_unreachable_objects means that all objects are retained in the snapshot, even if they are not reachable from an ordinary GC root.
- -snapshot_identifier=identifier Selects one snapshot when there is the choice of several in the heap dump file. For HPROF files this might be of the form #1 or #2. For DTFJ system dump files this might be of the form Address space ID.Process ID.Runtime ID. If there are multiple snapshots in a heap dump file and a specific snapshot is not selected then the parse will fail with a org.eclipse.mat.snapshot.MultipleSnapshotsException which will list appropriate possible snapshot identifiers to use with this option.
-
Note: Experimental
-discard_ratio=percentage. Option to discard a fraction of the objects from huge dumps.
-
Note: Experimental
-discard_pattern=regex. A regular expression matching the class names of objects to be discarded.
-
Note: Experimental
-discard_offset=offset value. Controls which particular objects are discarded.
-
Note: Experimental
-discard_seed=random number generator seed. Controls which particular objects are discarded.
- Other report options
Other parameters controlling output include the following:
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'
[]
- Unzip the report myheapdump_Leak_Suspects.zip
- View the index.html
The result is a HTML report.