# 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.

See: Description

Packages
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.extension: Extension point interfaces for HPROF dumps.
org.eclipse.mat.hprof.ui
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
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.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
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.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
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.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.

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 adding additional function. The main arrangement of plug-ins is

- `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.
    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.
      1. parser extension point
      - `org.eclipse.mat.dtfj` parses IBM DTFJ based dumps.
        1. Calls DTFJ extensions from IBM using the DTFJ API extension point from IBM
      - `org.eclipse.mat.hprof` parses HPROF based dumps.
        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.
    - `org.eclipse.mat.jdt` links classes in the snapshot to class source code in the IDE.
    - `org.eclipse.mat.chart` controls the generation of pie charts.
      - `org.eclipse.mat.chartui` also depends on `org.eclipse.mat.ui` displays pie charts.
    - `org.eclipse.mat.ui`
      1. contributions to the editor tool bar extension point
      2. new panes for results extension point