Project Plan For Memory Analyzer, version 0.8

Introduction

The Memory Analyzer has a rich set of features to analyze heap dumps from various VM vendors. The main focus is now on growing the community around the tool and, hopefully, eventually maturing from incubation.

The next step is releasing the currently available code base as version 0.7. The rationale is this: First of all, we have external dependencies (the DTFJ Parser provided by IBM and distributed via IBM's Alphaworks page) which require a stable version. Secondly, we hope to increase community interest by providing a released version.

This project plan is concerned with the development wave beyond this initial 0.7 release.

Release Deliverables

The Memory Analyzer is delivered as
  • stand-along RCP version via Eclipse.Org download server.
  • feature to be installed into an Eclipse IDE installation using an update site.

Table of Contents

Release Milestones

We plan to build and publish a stable version of the Memory Analyzer on a monthly basis.
0.711/15/2008
Tentative Release Date 0.7
0.83/1/2009
Tentative Release Date 0.8

Table of Contents

Target Environments

The Memory Analyzer requires Java 5 and runs on Eclipse 3.3 (Europa) and greater. A stand-alone version is provided on the download server which is build with the latest available platform (currently Eclipse 3.4 Ganymede).

Internationalization

Currently, the Memory Analyzer is not prepared to be translated. String constants are not yet externalized into resource bundles.

Table of Contents

Compatibility with Previous Releases

Binary and source compatibility is expected for the Snapshot and Parser API.

Table of Contents

Themes and Priorities

Comparing Heap Dumps

A heap dump contains a snapshot of the Java heap at one point in time. Every address is uniquely identified by its address. However, the addresses do not remain stable because the Garbage Collector is constantly moving objects around and thereby changing their addresses. Therefore only aggregates can be compared easily.

  • Compare Multiple Heap Dumps (not only two) on the Basis of the Class Histogram, Class Loader Histogram and Packages.
    The idea is to create a wizard which guides the user step-by-step from the selection of the heap dumps to the results.
  • Research Ways to Detect Leak Suspects Based on Comparing Heap Dumps.
    This is a rather open topic. The idea is to find growing structures like maps which could indicate a leak suspect.

Usability Features

Usability of the Memory Analyzer is important in order to attract new user groups.

  • Interactively Acquire Heap Dumps. (229449)
    The latest virtual machines provide interfaces to acquire a heap dump on demand. For example, Sun Java 6 VM provides a JMX extension, on Unix platforms the command-line utility jmap is available. This feature adds a wizard to acquire a heap dump from a virtual machine running on the local computer. The goal is to ease interactive analysis of an application and reduce the time for novices to get started.
  • Extend OQL to Handle Query Commands.
    Reports like the component report aggregate a lot of data into a single HTML page. To be able to drill down, it must be possible to go back to the heap dump and retrieve the objects. This requires an extension to the OQL to execute queries and a mechanism identify rows / tree nodes from the result.
  • Equinox OSGi Bundle Explorer
    It should be possible to extract from the heap dump the state of the Equinox runtime: bundles and their status, dependencies, registered and used services, extension points etc. For a live system, this is available via the Plug-In Registry Viewer (if installed), in the post-mortem case the MAT can help.

Documentation Improvement

The Memory Analyzer documentation is available as (a) help plug-in, (b) WIKI pages and (c) blog postings for special topics. The documentation covers a broad range of topics, but we acknowledge that it is often brief and not easily accessible to non-domain experts.

  • Restructure the documentation along tasks.
    The documentation should concentrate on tasks ("find leaks" or "reduce footprint") instead of features. This should reduce the learning curve of new users.
  • Improve the context help available for heap dump inspections.
    Today MAT displays a help button if a particular inspection provides context help. However, right now help is only available for immediate dominators and the component report. More context help is needed.
  • Publish the Help Plug-in contents on the Eclipse.Org Page.
    Additionally delivering the help content via web pages will make them searchable via search engines like Google. This should attract new users to the tool.

Building A Community

A vibrant community is essential for the long term health of any project. The Memory Analyzer is in a difficult position, because it is a niche tool which not only requires some significant domain knowledge about memory analysis but also is utilized only sporadically during the development of big applications.

  • Participate in the Galileo Simultaneous Release.
  • Demo the Memory Analyzer at the Eclipse Summit Europe.
  • Be responsive to questions posted to the newsgroup and Bugzilla reports.
  • Regularly blog about memory related topics.

Table of Contents

view raw xml of project plan
from project meta-data key "projectplanurl"