# 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
io.nayuki.deflate
DEFLATE library (Java)
org.eclipse.mat
Package for general Memory Analyzer exceptions, usable from any plug-in.
org.eclipse.mat.collect
Collections optimized for keys and values of ints and longs.
org.eclipse.mat.dtfj
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).
org.eclipse.mat.hprof
Parser for HPROF dumps, just a parser extension, not an Application Programming Interface (API).
org.eclipse.mat.hprof.acquire
Generator of HPROF dumps from other running processes on the system, just a acquire dumps extension, not an Application Programming Interface (API).
org.eclipse.mat.hprof.describer
Content describer for HPROF dumps, in a separate package so bundle not started just for content provider calls.
org.eclipse.mat.hprof.extension
Extension point interfaces for HPROF dumps.
org.eclipse.mat.hprof.ui
User interface for HPROF parser configuration.
org.eclipse.mat.ibmvm.acquire
Create IBM dumps - this is an internal package not intended as an Application Programming Interface (API) except as an extension.
org.eclipse.mat.ibmvm.agent
Create IBM dumps - this is an internal package not intended as an Application Programming Interface (API).
org.eclipse.mat.impl.chart
Builds pie charts using BIRT, not an Application Programming Interface (API).
org.eclipse.mat.inspections
These are general queries.
org.eclipse.mat.inspections.collectionextract
Code for reading data from collections found in a snapshot.
org.eclipse.mat.inspections.collections
These are queries for Collection classes.
org.eclipse.mat.inspections.component
These are queries for whole components (class loaders and packages).
org.eclipse.mat.inspections.eclipse
These are queries for debugging Eclipse based applications.
org.eclipse.mat.inspections.finalizer
These are queries for examining objects subject to finalization.
org.eclipse.mat.inspections.jetty
These are queries for the Jetty web server.
org.eclipse.mat.inspections.osgi
These are queries for examining OSGi bundles.
org.eclipse.mat.inspections.osgi.model
These are utilities for the OSGi bundle queries.
org.eclipse.mat.inspections.osgi.model.eclipse
These are utilities for Eclipse OSGi bundle queries.
org.eclipse.mat.inspections.threads
These are queries for Threads.
org.eclipse.mat.inspections.util
These are utilities for Eclipse OSGi bundle queries.
org.eclipse.mat.inspections.wildfly
These are queries for the application servers Wildfly and JBoss Enterprise Application Platform.
org.eclipse.mat.internal
This is an internal package not intended as an Application Programming Interface (API).
org.eclipse.mat.internal.acquire
Support for collecting arguments for acquiring heap dumps from running programs.
org.eclipse.mat.internal.apps
This is an internal package not intended as an Application Programming Interface (API).
org.eclipse.mat.internal.collectionextract
Code for reading data from collections found in a snapshot.
org.eclipse.mat.internal.snapshot
Collects arguments for queries.
org.eclipse.mat.internal.snapshot.inspections
These are queries for dominator tree and paths to/from garbage collection roots.
org.eclipse.mat.jdt
Links class names to the class source in an Eclipse IDE, not an Application Programming Interface (API).
org.eclipse.mat.jruby.resolver
These are queries for snapshots generated by JRuby applications.
org.eclipse.mat.parser
Interfaces for handling indexes.
org.eclipse.mat.parser.index
Implementations for handling indexes.
org.eclipse.mat.parser.internal
Implementations for building the snapshot (not API).
org.eclipse.mat.parser.internal.oql
Object Query Language (OQL) (not API).
org.eclipse.mat.parser.internal.oql.compiler
Object Query Language (OQL) compiler (not API).
org.eclipse.mat.parser.internal.oql.parser
Object Query Language (OQL) parser (not API).
org.eclipse.mat.parser.internal.snapshot
Utilities for performing basic operations on the snapshot (not API).
org.eclipse.mat.parser.internal.util
Input/output utilities for the parser component (not API).
org.eclipse.mat.parser.io
Utilities for the parser component (not API).
org.eclipse.mat.parser.model
The implementation of key snapshot objects such as representing classes, arrays, and objects in the snapshot.
org.eclipse.mat.query
Package for examining and controlling results of running queries.
org.eclipse.mat.query.annotations
Annotations for Queries.
org.eclipse.mat.query.annotations.descriptors
Package of interfaces for examining annotations of queries and arguments.
org.eclipse.mat.query.quantize
Value or linear frequency distribution histograms.
org.eclipse.mat.query.refined
A way of controlling the detail given by the output of a query.
org.eclipse.mat.query.registry
Package for getting a list of queries and examining their capabilities and setting them up.
org.eclipse.mat.query.results
Default Query Result Implementations.
org.eclipse.mat.report
Controls building of reports from XML report definitions.
org.eclipse.mat.report.internal
Internal classes for controlling building of reports from XML report definitions (not API).
org.eclipse.mat.snapshot
The Snapshot API, a VM independent way of looking at a snapshot of the state of objects in a heap.
org.eclipse.mat.snapshot.acquire
Classes to help get a snapshot from a current running process on the system.
org.eclipse.mat.snapshot.extension
Interfaces that extend the information extracted from heap dumps like threads, name resolvers etc.
org.eclipse.mat.snapshot.model
Snapshot entities, for example class, instances, class loaders, fields, GC roots.
org.eclipse.mat.snapshot.query
Utilities to develop heap dump queries.
org.eclipse.mat.snapshot.registry
Registries for the extensions to read additional heap dump information like threads, name resolvers etc.
org.eclipse.mat.ui
User interface plug-in definitions and query execution for UI components (not API).
org.eclipse.mat.ui.accessibility
User interface accessibility helpers (not API).
org.eclipse.mat.ui.actions
Actions from the editor tools bar (not API).
org.eclipse.mat.ui.compare
Compare reports basket and compared tables - user interface (not API).
org.eclipse.mat.ui.editor
Editor for viewing snapshot (not API).
org.eclipse.mat.ui.internal
Some internal classes for error logging, the wizard for getting started and the Memory Analyzer perspective when running in Eclipse IDE (not API).
org.eclipse.mat.ui.internal.acquire
Acquire heap dumps from other running processes - user interface (not API).
org.eclipse.mat.ui.internal.actions
Trigger queries from tool bar or from context menu - user interface (not API).
org.eclipse.mat.ui.internal.browser
Examine list of queries and query history - user interface (not API).
org.eclipse.mat.ui.internal.chart
User interface for displaying pie charts - this is an internal package not intended as an Application Programming Interface (API).
org.eclipse.mat.ui.internal.diagnostics
Diagnostics user interface (not API).
org.eclipse.mat.ui.internal.diagnostics.actions
Diagnostics actions (not API).
org.eclipse.mat.ui.internal.panes
Displays the results of queries as text or a table - user interface (not API).
org.eclipse.mat.ui.internal.query.arguments
Allows a user to specify arguments for a query - user interface (not API).
org.eclipse.mat.ui.internal.viewer
Allows filtering of the display of tables and trees, for example excluding certain class names - user interface (not API).
org.eclipse.mat.ui.internal.views
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).
org.eclipse.mat.ui.snapshot
Opens and parses a snapshot - user interface (not API).
org.eclipse.mat.ui.snapshot.actions
Supplementary actions to open a snapshot, copy to clipboard, open icon assist and so on - user interface (not API).
org.eclipse.mat.ui.snapshot.editor
Eclipse editor for everything to do with snapshots - user interface (not API).
org.eclipse.mat.ui.snapshot.panes
Panes for display in the editor for histograms, GC paths, comparisons - user interface (not API).
org.eclipse.mat.ui.snapshot.panes.oql
Configuration provider to assign content assist to the SourceViewer.
org.eclipse.mat.ui.snapshot.panes.oql.contentAssist
Content assist for the Object Query Language pane, including suggesting class names and highlighting keywords.
org.eclipse.mat.ui.snapshot.panes.oql.textPartitioning
Parsing of input in an Object Query Language pane.
org.eclipse.mat.ui.snapshot.views
The summary view of the snapshot and also all the messages - user interface (not API).
org.eclipse.mat.ui.snapshot.views.inspector
Inspections view of details of an object - user interface (not API).
org.eclipse.mat.ui.util
Utility classes for toolbars, popup menu, searching on typing - user interface (not API).
org.eclipse.mat.util
Utilities for building results.