blob: 15205087da065797ea57b987f5f5c42c31fe9fa1 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<?xml-stylesheet type="text/xsl" href="http://www.eclipse.org/projects/project-plan.xsl"?>
<plan plan-format="1.0" xmlns="http://www.eclipse.org/project/plan"
xmlns:html="http://www.w3.org/1999/xhtml" name="Eclipse Memory Analyzer">
<release projectid="technology.mat" version="0.8" />
<introduction>
<html:div xmlns="http://www.w3.org/1999/xhtml">
<p>The Memory Analyzer has a rich set of features to analyze heap dumps
from various VM vendors. The main focus is now on
<strong>growing the community</strong> around the tool and,
hopefully, eventually maturing from incubation.</p>
<p>The next step is releasing the currently available code base as
version <strong>0.7</strong>. 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.</p>
<p>This project plan is concerned with the development wave beyond
this initial 0.7 release.</p>
</html:div>
</introduction>
<release_deliverables>
<html:div xmlns="http://www.w3.org/1999/xhtml">
The Memory Analyzer is delivered as
<ul>
<li>stand-along RCP version via Eclipse.Org download server.</li>
<li>feature to be installed into an Eclipse IDE installation using an update site.</li>
</ul>
</html:div>
</release_deliverables>
<release_milestones>
<preamble>
<html:div xmlns="http://www.w3.org/1999/xhtml">
We plan to build and publish a stable version of the Memory Analyzer on a monthly basis.
</html:div>
</preamble>
<milestone date="11/15/2008" milestone="0.7">
<html:div>Tentative Release Date 0.7</html:div>
</milestone>
<milestone date="3/1/2009" milestone="0.8">
<html:div>Tentative Release Date 0.8</html:div>
</milestone>
<postamble />
</release_milestones>
<target_environments>
<html:div xmlns="http://www.w3.org/1999/xhtml">
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).
</html:div>
<internationalization>
<html:div>Currently, the Memory Analyzer is not prepared to be translated. String constants
are not yet externalized into resource bundles.</html:div>
</internationalization>
</target_environments>
<compatibility_with_previous_releases>
<html:div xmlns="http://www.w3.org/1999/xhtml">Binary and source compatibility is expected for the Snapshot and Parser API.</html:div>
</compatibility_with_previous_releases>
<themes_and_priorities>
<preamble />
<theme name="Comparing Heap Dumps">
<description>
<html:div xmlns="http://www.w3.org/1999/xhtml">
<p>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.</p>
<ul>
<li><em>Compare Multiple Heap Dumps (not only two) on the Basis
of the Class Histogram, Class Loader Histogram and Packages.</em><br />
The idea is to create a wizard which guides the user step-by-step
from the selection of the heap dumps to the results.
</li>
<li><em>Research Ways to Detect Leak Suspects Based on Comparing Heap Dumps.</em><br />
This is a rather open topic. The idea is to find growing structures
like maps which could indicate a leak suspect.
</li>
</ul>
</html:div>
</description>
</theme>
<theme name="Usability Features">
<description>
<html:div xmlns="http://www.w3.org/1999/xhtml">
<p>Usability of the Memory Analyzer is important in order to attract new user groups.</p>
<ul>
<li><em>Interactively Acquire Heap Dumps. (<a
href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=229449">229449</a>)</em><br />
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.
</li>
<li><em>Extend OQL to Handle Query Commands.</em><br />
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.
</li>
<li><em>Equinox OSGi Bundle Explorer</em><br />
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.
</li>
</ul>
</html:div>
</description>
</theme>
<theme name="Documentation Improvement">
<description>
<html:div xmlns="http://www.w3.org/1999/xhtml">
<p>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.</p>
<ul>
<li><em>Restructure the documentation along tasks.</em><br />
The documentation should concentrate on tasks ("find leaks" or "reduce footprint")
instead of features. This should reduce the learning curve of new users.
</li>
<li><em>Improve the context help available for heap dump inspections.</em><br />
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.
</li>
<li><em>Publish the Help Plug-in contents on the Eclipse.Org Page.</em><br />
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.
</li>
</ul>
</html:div>
</description>
</theme>
<theme name="Building A Community">
<description>
<html:div xmlns="http://www.w3.org/1999/xhtml">
<p>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.
</p>
<ul>
<li>Participate in the Galileo Simultaneous Release.</li>
<li>Demo the Memory Analyzer at the Eclipse Summit Europe.</li>
<li>Be responsive to questions posted to the newsgroup and Bugzilla reports.</li>
<li>Regularly blog about memory related topics.</li>
</ul>
</html:div>
</description>
</theme>
</themes_and_priorities>
</plan>