Memory Analyzer API

Memory Analyzer is an Eclipse application for solving memory problems in user applications based on a snapshot of the contents of the heap. It has several extension points for incorporating additional function. The main arrangement of plug-ins is as follows, showing dependencies by indentation:
org.eclipse.mat.report
Provides report building capabilities.
  1. query extension point
  2. rendering extension point
  3. report extension point
org.eclipse.mat.api
Allows access to data from the snapshot, such as objects and classes. It also holds the standard queries. Most user-written reports just need access to the api and report plugins.
  1. snapshot factory extension point
  2. trigger heap dump extension point
  3. name resolver extension point for object describing
  4. request resolver extension point
  5. thread resolver extension point
  6. ticketResolver extension point
org.eclipse.mat.parser
Controls the parsing of a heap dump into a snapshot, and holds the implementations of the snapshot objects and indexes. Parsers for new dump types will use facilities of this plugin.
  1. parser extension point
org.eclipse.mat.dtfj
Parses IBM DTFJ based dumps.
  1. Depends on the DTFJ feature from IBM to provide readers for system dumps, portable heap dump (PHD) files and Java core files.
  2. Calls DTFJ extensions from IBM using the DTFJ API extension point from IBM
org.eclipse.mat.hprof
Parses HPROF based dumps. Also provides an extension for the acquire (trigger) heap dump extension point to trigger a HPROF dump. Creates HPROF dumps from OpenJDK VMs running on the system on request for analysis by MAT.
  1. HPROF enhancement extension point
org.eclipse.mat.ibmdump
Creates dumps from other IBM VMs running on the system on request for analysis by MAT. This can also create HPROF heap dumps from OpenJDK VMs.
org.eclipse.mat.jdt
Links classes in the snapshot to class source code in the Eclipse IDE.
org.eclipse.mat.jruby.resolver
Displays details of JRuby and Ruby stack traces in reports using a request solver.
org.eclipse.mat.chart
Controls the generation of pie charts. Used in batch mode to generate PNG charts for HTML reports.
org.eclipse.mat.chart.ui
Displays pie charts in the MAT User Interface. Also depends on org.eclipse.mat.ui
org.eclipse.mat.ui
The main graphical user interface (GUI) for Eclipse Memory Analyzer.
  1. contributions to the editor tool bar extension point
  2. new panes for results extension point
org.eclipse.mat.ui.rcp
The stand-alone version of MAT uses this plugin. It is not needed when MAT is installed into an existing Eclipse IDE.
org.eclipse.mat.ui.help
Provides help for Eclipse Memory Analyzer. Help is written in Darwin Information Typing Architecture (DITA) format and is converted to HTML as a manual step before being committed to GIT. Javadoc for the Java source code is automatically built and included in the help (here), and the Javadoc is also indexed with the Eclipse Help.
Packages
Package
Description
DEFLATE library (Java)
Package for general Memory Analyzer exceptions, usable from any plug-in.
Collections optimized for keys and values of ints and longs.
This provides the parser for IBM Diagnostic Tooling Framework for Java (DTFJ) dumps, and is just a parser extension, not an Application Programming Interface (API).
Parser for HPROF dumps, just a parser extension, not an Application Programming Interface (API).
Generator of HPROF dumps from other running processes on the system, just a acquire dumps extension, not an Application Programming Interface (API).
Content describer for HPROF dumps, in a separate package so bundle not started just for content provider calls.
Extension point interfaces for HPROF dumps.
User interface for HPROF parser configuration.
Create IBM dumps - this is an internal package not intended as an Application Programming Interface (API) except as an extension.
Create IBM dumps - this is an internal package not intended as an Application Programming Interface (API).
Builds pie charts using BIRT, not an Application Programming Interface (API).
These are general queries.
Code for reading data from collections found in a snapshot.
These are queries for Collection classes.
These are queries for whole components (class loaders and packages).
These are queries for debugging Eclipse based applications.
These are queries for examining objects subject to finalization.
These are queries for the Jetty web server.
These are queries for examining OSGi bundles.
These are utilities for the OSGi bundle queries.
These are utilities for Eclipse OSGi bundle queries.
These are queries for Threads.
These are utilities for Eclipse OSGi bundle queries.
These are queries for the application servers Wildfly and JBoss Enterprise Application Platform.
This is an internal package not intended as an Application Programming Interface (API).
Support for collecting arguments for acquiring heap dumps from running programs.
This is an internal package not intended as an Application Programming Interface (API).
Code for reading data from collections found in a snapshot.
Collects arguments for queries.
These are queries for dominator tree and paths to/from garbage collection roots.
Links class names to the class source in an Eclipse IDE, not an Application Programming Interface (API).
These are queries for snapshots generated by JRuby applications.
Interfaces for handling indexes.
Implementations for handling indexes.
Implementations for building the snapshot (not API).
Object Query Language (OQL) (not API).
Object Query Language (OQL) compiler (not API).
Object Query Language (OQL) parser (not API).
Utilities for performing basic operations on the snapshot (not API).
Input/output utilities for the parser component (not API).
Utilities for the parser component (not API).
The implementation of key snapshot objects such as representing classes, arrays, and objects in the snapshot.
Package for examining and controlling results of running queries.
Annotations for Queries.
Package of interfaces for examining annotations of queries and arguments.
Value or linear frequency distribution histograms.
A way of controlling the detail given by the output of a query.
Package for getting a list of queries and examining their capabilities and setting them up.
Default Query Result Implementations.
Controls building of reports from XML report definitions.
Internal classes for controlling building of reports from XML report definitions (not API).
The Snapshot API, a VM independent way of looking at a snapshot of the state of objects in a heap.
Classes to help get a snapshot from a current running process on the system.
Interfaces that extend the information extracted from heap dumps like threads, name resolvers etc.
Snapshot entities, for example class, instances, class loaders, fields, GC roots.
Utilities to develop heap dump queries.
Registries for the extensions to read additional heap dump information like threads, name resolvers etc.
User interface plug-in definitions and query execution for UI components (not API).
User interface accessibility helpers (not API).
Actions from the editor tools bar (not API).
Compare reports basket and compared tables - user interface (not API).
Editor for viewing snapshot (not API).
Some internal classes for error logging, the wizard for getting started and the Memory Analyzer perspective when running in Eclipse IDE (not API).
Acquire heap dumps from other running processes - user interface (not API).
Trigger queries from tool bar or from context menu - user interface (not API).
Examine list of queries and query history - user interface (not API).
User interface for displaying pie charts - this is an internal package not intended as an Application Programming Interface (API).
Diagnostics user interface (not API).
Diagnostics actions (not API).
Displays the results of queries as text or a table - user interface (not API).
Allows a user to specify arguments for a query - user interface (not API).
Allows filtering of the display of tables and trees, for example excluding certain class names - user interface (not API).
Some general views such as details of the dump, list of dumps, some user written notes, and the history of actions - user interface (not API).
Opens and parses a snapshot - user interface (not API).
Supplementary actions to open a snapshot, copy to clipboard, open icon assist and so on - user interface (not API).
Eclipse editor for everything to do with snapshots - user interface (not API).
Panes for display in the editor for histograms, GC paths, comparisons - user interface (not API).
Configuration provider to assign content assist to the SourceViewer.
Content assist for the Object Query Language pane, including suggesting class names and highlighting keywords.
Parsing of input in an Object Query Language pane.
The summary view of the snapshot and also all the messages - user interface (not API).
Inspections view of details of an object - user interface (not API).
Utility classes for toolbars, popup menu, searching on typing - user interface (not API).
Utilities for building results.