Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Johnson2018-12-30 15:18:48 -0500
committerAndrew Johnson2018-12-30 15:18:48 -0500
commitd32281784d4e8b5199634bcd2307feed36610547 (patch)
treef24486341372a32c8172afb7f9cbbfe95f6c58bd
parent3baf99030eb8d6fa167877e851b5795836e75547 (diff)
downloadorg.eclipse.mat-d32281784d4e8b5199634bcd2307feed36610547.tar.gz
org.eclipse.mat-d32281784d4e8b5199634bcd2307feed36610547.tar.xz
org.eclipse.mat-d32281784d4e8b5199634bcd2307feed36610547.zip
543045: Eclipse MAT does not show complete actual heap size
(Heap dump size) on overview tab. Add more help for unreachable objects Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=543045 Change-Id: I122403685e0154235301cbfa60f18b0290d7b31a
-rw-r--r--plugins/org.eclipse.mat.api/src/org/eclipse/mat/inspections/UnreachableObjectsQuery.java2
-rw-r--r--plugins/org.eclipse.mat.ui.help/concepts/reachability.dita60
-rw-r--r--plugins/org.eclipse.mat.ui.help/concepts/reachability.html66
-rw-r--r--plugins/org.eclipse.mat.ui.help/gettingstarted/basictutorial.dita6
-rw-r--r--plugins/org.eclipse.mat.ui.help/gettingstarted/basictutorial.html7
-rw-r--r--plugins/org.eclipse.mat.ui.help/reference/inspections/unreachable_histogram.pngbin0 -> 11731 bytes
-rw-r--r--plugins/org.eclipse.mat.ui.help/reference/inspections/unreachable_objects.dita90
-rw-r--r--plugins/org.eclipse.mat.ui.help/reference/inspections/unreachable_objects.html129
-rw-r--r--plugins/org.eclipse.mat.ui.help/toc.ditamap2
-rw-r--r--plugins/org.eclipse.mat.ui.help/toc.xml2
-rw-r--r--plugins/org.eclipse.mat.ui.help/welcome.dita1
-rw-r--r--plugins/org.eclipse.mat.ui.help/welcome.html2
12 files changed, 366 insertions, 1 deletions
diff --git a/plugins/org.eclipse.mat.api/src/org/eclipse/mat/inspections/UnreachableObjectsQuery.java b/plugins/org.eclipse.mat.api/src/org/eclipse/mat/inspections/UnreachableObjectsQuery.java
index 133bcb30..7b17efa0 100644
--- a/plugins/org.eclipse.mat.api/src/org/eclipse/mat/inspections/UnreachableObjectsQuery.java
+++ b/plugins/org.eclipse.mat.api/src/org/eclipse/mat/inspections/UnreachableObjectsQuery.java
@@ -14,12 +14,14 @@ import org.eclipse.mat.query.IQuery;
import org.eclipse.mat.query.IResult;
import org.eclipse.mat.query.annotations.Argument;
import org.eclipse.mat.query.annotations.CommandName;
+import org.eclipse.mat.query.annotations.HelpUrl;
import org.eclipse.mat.query.annotations.Icon;
import org.eclipse.mat.snapshot.UnreachableObjectsHistogram;
import org.eclipse.mat.util.IProgressListener;
@CommandName("unreachable_objects")
@Icon("/META-INF/icons/unreachables_histogram.gif")
+@HelpUrl("/org.eclipse.mat.ui.help/reference/inspections/unreachable_objects.html")
public class UnreachableObjectsQuery implements IQuery
{
@Argument
diff --git a/plugins/org.eclipse.mat.ui.help/concepts/reachability.dita b/plugins/org.eclipse.mat.ui.help/concepts/reachability.dita
new file mode 100644
index 00000000..33f538d3
--- /dev/null
+++ b/plugins/org.eclipse.mat.ui.help/concepts/reachability.dita
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2018 IBM Corporation.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+
+ Contributors:
+ Andrew Johnson/IBM Corporation - initial API and implementation
+ -->
+<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd" >
+<concept id="concept_reachability" xml:lang="en-us">
+ <title>Reachability</title>
+ <prolog>
+ <copyright>
+ <copyryear year=""></copyryear>
+ <copyrholder>
+ Copyright (c) 2018 IBM Corporation.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ </copyrholder>
+ </copyright>
+ </prolog>
+
+ <conbody>
+ <p> Objects in a heap dump have references to other objects. These can either be
+ via field references (for simple objects), array elements (for object arrays)
+ or via various hidden references. For instance every object contains a reference to
+ its type, and each class contain a reference to the class loader which loaded
+ the class.</p>
+ <p>These objects and references form a directed graph. The objects are the nodes,
+ the references are the directed links between the nodes. The
+ garbage collection roots are the roots of this graph.
+ </p>
+ <dl>
+ <dlentry>
+ <dt>Reachable</dt><dd>An object is reachable from another object if there is a
+ path following the directed links from the source object to the destination object.
+ </dd>
+ </dlentry>
+ <dlentry>
+ <dt>Unreachable object</dt><dd>If there is no path from a garbage collection root
+ to an object then it is unreachable. There is then no way a legitimate Java program
+ can every get access to this object, so it is safe for the Java virtual machine to
+ discard this object from the heap. This process of determining unreachable objects and
+ discarding them, thus making room for more objects to be allocated as required, is
+ called garbage collection.
+ </dd>
+ </dlentry>
+ </dl>
+ </conbody>
+ <related-links>
+ <link href="gcroots.dita" type="concept">
+ <linktext>Garbage collection roots</linktext>
+ </link>
+ </related-links>
+</concept> \ No newline at end of file
diff --git a/plugins/org.eclipse.mat.ui.help/concepts/reachability.html b/plugins/org.eclipse.mat.ui.help/concepts/reachability.html
new file mode 100644
index 00000000..57159818
--- /dev/null
+++ b/plugins/org.eclipse.mat.ui.help/concepts/reachability.html
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xml:lang="en-us" lang="en-us">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<meta name="DC.Type" content="concept"/>
+<meta name="DC.Title" content="Reachability"/>
+<meta name="DC.Relation" scheme="URI" content="gcroots.html"/>
+<meta name="copyright" content="Copyright (c) 2018 IBM Corporation. All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html " type="primary"/>
+<meta name="DC.Rights.Owner" content="Copyright (c) 2018 IBM Corporation. All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html " type="primary"/>
+<meta name="DC.Format" content="XHTML"/>
+<meta name="DC.Identifier" content="concept_reachability"/>
+<meta name="DC.Language" content="en-us"/>
+<link rel="stylesheet" type="text/css" href="../styles/commonltr.css"/>
+<title>Reachability</title>
+</head>
+<body id="concept_reachability">
+
+
+ <h1 class="title topictitle1">Reachability</h1>
+
+
+
+ <div class="body conbody">
+ <p class="p"> Objects in a heap dump have references to other objects. These can either be
+ via field references (for simple objects), array elements (for object arrays)
+ or via various hidden references. For instance every object contains a reference to
+ its type, and each class contain a reference to the class loader which loaded
+ the class.</p>
+
+ <p class="p">These objects and references form a directed graph. The objects are the nodes,
+ the references are the directed links between the nodes. The
+ garbage collection roots are the roots of this graph.
+ </p>
+
+ <dl class="dl">
+
+ <dt class="dt dlterm">Reachable</dt>
+<dd class="dd">An object is reachable from another object if there is a
+ path following the directed links from the source object to the destination object.
+ </dd>
+
+
+
+ <dt class="dt dlterm">Unreachable object</dt>
+<dd class="dd">If there is no path from a garbage collection root
+ to an object then it is unreachable. There is then no way a legitimate Java program
+ can every get access to this object, so it is safe for the Java virtual machine to
+ discard this object from the heap. This process of determining unreachable objects and
+ discarding them, thus making room for more objects to be allocated as required, is
+ called garbage collection.
+ </dd>
+
+
+ </dl>
+
+ </div>
+
+ <div class="related-links"><div class="relinfo relconcepts"><strong>Related concepts</strong><br/>
+<div><a class="link" href="gcroots.html">Garbage collection roots</a></div>
+</div>
+</div>
+
+</body>
+</html> \ No newline at end of file
diff --git a/plugins/org.eclipse.mat.ui.help/gettingstarted/basictutorial.dita b/plugins/org.eclipse.mat.ui.help/gettingstarted/basictutorial.dita
index 422a4ed9..2cdbcc6e 100644
--- a/plugins/org.eclipse.mat.ui.help/gettingstarted/basictutorial.dita
+++ b/plugins/org.eclipse.mat.ui.help/gettingstarted/basictutorial.dita
@@ -126,6 +126,12 @@
classes, objects and class loaders.
</p>
<p>
+ If the total size of the dump is much smaller than the size of the file it is possible
+ that the heap dump contained many 'garbage' objects which would be discarded at the next garbage
+ collection. See the <xref href="../reference/inspections/unreachable_objects.dita">unreachable objects</xref>
+ query to examine these 'garbage' objects.
+ </p>
+ <p>
Right below, the pie chart gives an impression on the biggest
objects in the dump. Move your mouse over a slice to see the details
of the objects in the object inspector on the left. Click on any
diff --git a/plugins/org.eclipse.mat.ui.help/gettingstarted/basictutorial.html b/plugins/org.eclipse.mat.ui.help/gettingstarted/basictutorial.html
index 5b1142d2..aa522f13 100644
--- a/plugins/org.eclipse.mat.ui.help/gettingstarted/basictutorial.html
+++ b/plugins/org.eclipse.mat.ui.help/gettingstarted/basictutorial.html
@@ -113,6 +113,13 @@
</p>
<p class="p">
+ If the total size of the dump is much smaller than the size of the file it is possible
+ that the heap dump contained many 'garbage' objects which would be discarded at the next garbage
+ collection. See the <a class="xref" href="../reference/inspections/unreachable_objects.html" title="Find out more about objects that could or should be garbage collected.">unreachable objects</a>
+ query to examine these 'garbage' objects.
+ </p>
+
+ <p class="p">
Right below, the pie chart gives an impression on the biggest
objects in the dump. Move your mouse over a slice to see the details
of the objects in the object inspector on the left. Click on any
diff --git a/plugins/org.eclipse.mat.ui.help/reference/inspections/unreachable_histogram.png b/plugins/org.eclipse.mat.ui.help/reference/inspections/unreachable_histogram.png
new file mode 100644
index 00000000..f19bd313
--- /dev/null
+++ b/plugins/org.eclipse.mat.ui.help/reference/inspections/unreachable_histogram.png
Binary files differ
diff --git a/plugins/org.eclipse.mat.ui.help/reference/inspections/unreachable_objects.dita b/plugins/org.eclipse.mat.ui.help/reference/inspections/unreachable_objects.dita
new file mode 100644
index 00000000..86472e47
--- /dev/null
+++ b/plugins/org.eclipse.mat.ui.help/reference/inspections/unreachable_objects.dita
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE reference PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd" >
+<reference id="ref_inspections_path_to_gc_roots" xml:lang="en-us">
+ <title>Unreachable objects</title>
+ <shortdesc>Find out more about objects that could or should be garbage collected.
+ </shortdesc>
+ <prolog>
+ <copyright>
+ <copyryear year="2018"></copyryear>
+ <copyrholder>
+ Copyright (c) 2008, 2018 SAP AG, IBM Corporation and others.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ </copyrholder>
+ </copyright>
+ </prolog>
+
+ <refbody>
+ <section>
+ <title>Motivation</title>
+ <p>Sometimes a heap dump contains objects which would be removed at the next garbage collection.
+ These are objects which are unreachable from the garbage collection roots.
+ By default, Memory Analyzer removes these objects as part of the parse process as normally they are not
+ important in determining a memory leak. If the heap dump is generated as a result of an <apiname>OutOfMemoryError</apiname>
+ then the Java virtual machine will usually have performed a garbage collection operation to attempt to
+ free space for the new object, so there will not be those objects in the heap dump file.
+ There is a chance that the garbage collection was not performed, for example if the
+ object to be allocated was so huge that it was obvious to the JVM that no amount of garbage collection
+ could free enough space, or if the heap dump was triggered by another event.</p>
+ <p>Sometimes however, it is interesting to investigate these unreachable objects. For example if the application
+ is spending a lot of time garbage collecting then it may be allocating and discarding more objects
+ than is sensible. The types of the objects which could be discarded at the next garbage collection
+ gives a clue as to which temporary objects the application is causing to be allocated.
+ When acquiring a heap dump for this purpose using the Memory Analyzer,
+ do not use the <cmdname>live=true</cmdname> option as that would discard unreachable objects
+ before the heap dump is generated.</p>
+ </section>
+ <section>
+ <title>Arguments</title>
+ <p>None</p>
+ <p>Invoke using either:
+ <ol>
+ <li>From the link on the Overview page
+ </li>
+ <li>From the Query Browser via <menucascade><uicontrol>Java Basics</uicontrol><uicontrol> Unreachable Objects Histogram</uicontrol></menucascade></li></ol>
+ </p>
+ </section>
+ <section id="result">
+ <title>Result</title>
+ The result is a histogram table showing the class names and number of object instances
+ of the unreachable objects, together with their total sizes.
+ This histogram has no object graph behind it (unreachable objects are removed during the parsing of the heap dump,
+ only class names are stored).
+ Thus it is not possible to see e.g. a list of references for a particular unreachable object.
+ <image href="unreachable_histogram.png">
+ <alt>Table displaying the unreachable objects.</alt>
+ </image>
+ </section>
+ <section>
+ <title>Continued analysis</title>
+ <p>If more information about the unreachable objects is required then the following steps
+ can include the objects in the snapshot.</p>
+ <ol>
+ <li>Close the snapshot
+ </li>
+ <li>Select the heap dump using <menucascade><uicontrol>Window</uicontrol><uicontrol>Heap Dump History</uicontrol></menucascade>
+ mouse button 2, <menucascade><uicontrol>Delete Index Files</uicontrol></menucascade>
+ </li>
+ <li>Select 'Keep unreachable objects' using <menucascade><uicontrol>Window</uicontrol><uicontrol>Preferences</uicontrol>
+ <uicontrol>Memory Analyzer</uicontrol></menucascade></li>
+ <li>Reopen the heap dump, which will reparse the heap dump.</li>
+ <li>Select the <menucascade><uicontrol>Java Basics</uicontrol><uicontrol>GC Roots</uicontrol></menucascade>
+ query.</li>
+ <li>Select the 'Unreachable Objects' row.</li>
+ <li>Run the 'Show Retained Set' query on that row.</li>
+ </ol>
+ This will show a histogram of all the objects which normally would be unreachable and would be garbage collected
+ at the next opportunity. As these objects are now in the snapshot then they can be inspected in more detail.
+ </section>
+ </refbody>
+ <related-links>
+ <link href="../../concepts/reachability.dita" />
+ <link href="../../concepts/gcroots.dita" />
+ <link href="../../tasks/configure_mat.dita" />
+ <link href="../../tasks/acquiringheapdump.dita" />
+ <link href="../../reference/inspections/retained_set.dita" />
+ </related-links>
+</reference>
diff --git a/plugins/org.eclipse.mat.ui.help/reference/inspections/unreachable_objects.html b/plugins/org.eclipse.mat.ui.help/reference/inspections/unreachable_objects.html
new file mode 100644
index 00000000..aa37bd64
--- /dev/null
+++ b/plugins/org.eclipse.mat.ui.help/reference/inspections/unreachable_objects.html
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xml:lang="en-us" lang="en-us">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<meta name="DC.Type" content="reference"/>
+<meta name="DC.Title" content="Unreachable objects"/>
+<meta name="abstract" content="Find out more about objects that could or should be garbage collected."/>
+<meta name="description" content="Find out more about objects that could or should be garbage collected."/>
+<meta name="DC.Relation" scheme="URI" content="../../concepts/reachability.html"/>
+<meta name="DC.Relation" scheme="URI" content="../../concepts/gcroots.html"/>
+<meta name="DC.Relation" scheme="URI" content="../../tasks/configure_mat.html"/>
+<meta name="DC.Relation" scheme="URI" content="../../tasks/acquiringheapdump.html"/>
+<meta name="DC.Relation" scheme="URI" content="retained_set.html"/>
+<meta name="copyright" content="Copyright (c) 2008, 2018 SAP AG, IBM Corporation and others. All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html 2018" type="primary"/>
+<meta name="DC.Rights.Owner" content="Copyright (c) 2008, 2018 SAP AG, IBM Corporation and others. All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html 2018" type="primary"/>
+<meta name="DC.Format" content="XHTML"/>
+<meta name="DC.Identifier" content="ref_inspections_path_to_gc_roots"/>
+<meta name="DC.Language" content="en-us"/>
+<link rel="stylesheet" type="text/css" href="../../styles/commonltr.css"/>
+<title>Unreachable objects</title>
+</head>
+<body id="ref_inspections_path_to_gc_roots">
+
+
+ <h1 class="title topictitle1">Unreachable objects</h1>
+
+
+
+
+ <div class="body refbody"><p class="shortdesc">Find out more about objects that could or should be garbage collected.
+ </p>
+
+ <div class="section"><h2 class="title sectiontitle">Motivation</h2>
+
+ <p class="p">Sometimes a heap dump contains objects which would be removed at the next garbage collection.
+ These are objects which are unreachable from the garbage collection roots.
+ By default, Memory Analyzer removes these objects as part of the parse process as normally they are not
+ important in determining a memory leak. If the heap dump is generated as a result of an <span class="keyword apiname">OutOfMemoryError</span>
+ then the Java virtual machine will usually have performed a garbage collection operation to attempt to
+ free space for the new object, so there will not be those objects in the heap dump file.
+ There is a chance that the garbage collection was not performed, for example if the
+ object to be allocated was so huge that it was obvious to the JVM that no amount of garbage collection
+ could free enough space, or if the heap dump was triggered by another event.</p>
+
+ <p class="p">Sometimes however, it is interesting to investigate these unreachable objects. For example if the application
+ is spending a lot of time garbage collecting then it may be allocating and discarding more objects
+ than is sensible. The types of the objects which could be discarded at the next garbage collection
+ gives a clue as to which temporary objects the application is causing to be allocated.
+ When acquiring a heap dump for this purpose using the Memory Analyzer,
+ do not use the <span class="keyword cmdname">live=true</span> option as that would discard unreachable objects
+ before the heap dump is generated.</p>
+
+ </div>
+
+ <div class="section"><h2 class="title sectiontitle">Arguments</h2>
+
+ <p class="p">None</p>
+
+ <div class="p">Invoke using either:
+ <ol class="ol">
+ <li class="li">From the link on the Overview page
+ </li>
+
+ <li class="li">From the Query Browser via <span class="ph menucascade"><span class="ph uicontrol">Java Basics</span> &gt; <span class="ph uicontrol"> Unreachable Objects Histogram</span></span></li>
+</ol>
+
+ </div>
+
+ </div>
+
+ <div class="section" id="ref_inspections_path_to_gc_roots__result"><h2 class="title sectiontitle">Result</h2>
+
+ The result is a histogram table showing the class names and number of object instances
+ of the unreachable objects, together with their total sizes.
+ This histogram has no object graph behind it (unreachable objects are removed during the parsing of the heap dump,
+ only class names are stored).
+ Thus it is not possible to see e.g. a list of references for a particular unreachable object.
+ <img class="image" src="unreachable_histogram.png" alt="Table displaying the unreachable objects."/>
+ </div>
+
+ <div class="section"><h2 class="title sectiontitle">Continued analysis</h2>
+
+ <p class="p">If more information about the unreachable objects is required then the following steps
+ can include the objects in the snapshot.</p>
+
+ <ol class="ol">
+ <li class="li">Close the snapshot
+ </li>
+
+ <li class="li">Select the heap dump using <span class="ph menucascade"><span class="ph uicontrol">Window</span> &gt; <span class="ph uicontrol">Heap Dump History</span></span>
+ mouse button 2, <span class="ph menucascade"><span class="ph uicontrol">Delete Index Files</span></span>
+ </li>
+
+ <li class="li">Select 'Keep unreachable objects' using <span class="ph menucascade"><span class="ph uicontrol">Window</span> &gt; <span class="ph uicontrol">Preferences</span> &gt; <span class="ph uicontrol">Memory Analyzer</span></span></li>
+
+ <li class="li">Reopen the heap dump, which will reparse the heap dump.</li>
+
+ <li class="li">Select the <span class="ph menucascade"><span class="ph uicontrol">Java Basics</span> &gt; <span class="ph uicontrol">GC Roots</span></span>
+ query.</li>
+
+ <li class="li">Select the 'Unreachable Objects' row.</li>
+
+ <li class="li">Run the 'Show Retained Set' query on that row.</li>
+
+ </ol>
+
+ This will show a histogram of all the objects which normally would be unreachable and would be garbage collected
+ at the next opportunity. As these objects are now in the snapshot then they can be inspected in more detail.
+ </div>
+
+ </div>
+
+ <div class="related-links"><div class="relinfo relconcepts"><strong>Related concepts</strong><br/>
+<div><a class="link" href="../../concepts/reachability.html">Reachability</a></div>
+<div><a class="link" href="../../concepts/gcroots.html">Garbage Collection Roots</a></div>
+</div>
+<div class="relinfo reltasks"><strong>Related tasks</strong><br/>
+<div><a class="link" href="../../tasks/configure_mat.html">Memory Analyzer Configuration</a></div>
+<div><a class="link" href="../../tasks/acquiringheapdump.html">Acquiring Heap Dumps</a></div>
+</div>
+<div class="relinfo relref"><strong>Related reference</strong><br/>
+<div><a class="link" href="retained_set.html" title="All objects kept alive just because of the selected objects.">Retained Set</a></div>
+</div>
+</div>
+
+</body>
+</html> \ No newline at end of file
diff --git a/plugins/org.eclipse.mat.ui.help/toc.ditamap b/plugins/org.eclipse.mat.ui.help/toc.ditamap
index f6c2c36d..264ab693 100644
--- a/plugins/org.eclipse.mat.ui.help/toc.ditamap
+++ b/plugins/org.eclipse.mat.ui.help/toc.ditamap
@@ -45,6 +45,8 @@
type="reference" />
<topicref href="reference/inspections/top_consumers.dita"
type="reference" />
+ <topicref href="reference/inspections/unreachable_objects.dita"
+ type="reference" />
</topicref>
<topicref href="reference/querymatrix.dita" type="reference">
<topicref href="reference/findingmemoryleak.dita" type="reference" />
diff --git a/plugins/org.eclipse.mat.ui.help/toc.xml b/plugins/org.eclipse.mat.ui.help/toc.xml
index 124ea6a7..f62c150f 100644
--- a/plugins/org.eclipse.mat.ui.help/toc.xml
+++ b/plugins/org.eclipse.mat.ui.help/toc.xml
@@ -1,3 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<?NLS TYPE="org.eclipse.help.toc"?>
-<toc label="Memory Analyzer" topic="welcome.html"><topic label="Introduction" href="welcome.html"/><topic label="Getting Started"><topic label="Basic Tutorial" href="gettingstarted/basictutorial.html"/></topic><topic label="Concepts"><topic label="Heap Dump" href="concepts/heapdump.html"/><topic label="Shallow vs. Retained Heap" href="concepts/shallowretainedheap.html"/><topic label="Dominator Tree" href="concepts/dominatortree.html"/><topic label="Garbage Collection Roots" href="concepts/gcroots.html"/></topic><topic label="Tasks"><topic label="Acquiring Heap Dumps" href="tasks/acquiringheapdump.html"/><topic label="Installing IBM DTFJ feature for IBM dumps" href="tasks/installDTFJ.html"/><topic label="Running Leak Suspect Report" href="tasks/runningleaksuspectreport.html"/><topic label="List the Biggest Objects" href="tasks/listbiggestobjects.html"/><topic label="Finding Responsible Objects" href="tasks/findingresponsibleobjects.html"/><topic label="Querying Heap Objects (OQL)" href="tasks/queryingheapobjects.html"/><topic label="Analyze Class Loader" href="tasks/analyzingclassloader.html"/><topic label="Analyzing Threads" href="tasks/analyzingthreads.html"/><topic label="Analyzing Java Collection Usage" href="tasks/analyzingjavacollectionusage.html"/><topic label="Analyzing Finalizer" href="tasks/analyzingfinalizer.html"/><topic label="Eclipse Equinox Bundle Registry" href="tasks/bundleregistry.html"/><topic label="Comparing Objects" href="tasks/comparingdata.html"/><topic label="Export Data" href="tasks/exportdata.html"/><topic label="Export Heap Dump" href="tasks/exportdump.html"/><topic label="Memory Analyzer Configuration" href="tasks/configure_mat.html"/></topic><topic label="Reference"><topic label="Inspections"><topic label="Leak Identification"><topic label="Component Report" href="reference/inspections/component_report.html"/></topic><topic label="Immediate Dominators" href="reference/inspections/immediate_dominators.html"/><topic label="Group by Value" href="reference/inspections/group_by_value.html"/><topic label="Path to GC Roots" href="reference/inspections/path_to_gc_roots.html"/><topic label="Retained Set" href="reference/inspections/retained_set.html"/><topic label="Top Consumers" href="reference/inspections/top_consumers.html"/></topic><topic label="Query Matrix" href="reference/querymatrix.html"><topic label="Finding Memory Leak" href="reference/findingmemoryleak.html"/><topic label="Analyzing Memory Consumption" href="reference/analyzingmemoryconsumption.html"/></topic><topic label="OQL Syntax" href="reference/oqlsyntax.html"><topic label="SELECT Clause" href="reference/oqlsyntaxselect.html"/><topic label="FROM Clause" href="reference/oqlsyntaxfrom.html"/><topic label="WHERE Clause" href="reference/oqlsyntaxwhere.html"/><topic label="Property Accessors" href="reference/propertyaccessors.html"/><topic label="BNF for the Object Query Language" href="reference/bnfofoql.html"/></topic><topic label="Selecting Queries" href="reference/selectingqueries.html"/><topic label="Icons Assist" href="reference/iconassist.html"/><topic label="Tips and Tricks" href="reference/tipsandtricks.html"/><topic label="Extending Memory Analyzer" href="reference/extendingmat.html"/><topic label="API Reference" href="doc/index.html"/></topic><topic label="New and Noteworthy" href="noteworthy.html"/><topic label="Legal" href="legal.html"/></toc> \ No newline at end of file
+<toc label="Memory Analyzer" topic="welcome.html"><topic label="Introduction" href="welcome.html"/><topic label="Getting Started"><topic label="Basic Tutorial" href="gettingstarted/basictutorial.html"/></topic><topic label="Concepts"><topic label="Heap Dump" href="concepts/heapdump.html"/><topic label="Shallow vs. Retained Heap" href="concepts/shallowretainedheap.html"/><topic label="Dominator Tree" href="concepts/dominatortree.html"/><topic label="Garbage Collection Roots" href="concepts/gcroots.html"/></topic><topic label="Tasks"><topic label="Acquiring Heap Dumps" href="tasks/acquiringheapdump.html"/><topic label="Installing IBM DTFJ feature for IBM dumps" href="tasks/installDTFJ.html"/><topic label="Running Leak Suspect Report" href="tasks/runningleaksuspectreport.html"/><topic label="List the Biggest Objects" href="tasks/listbiggestobjects.html"/><topic label="Finding Responsible Objects" href="tasks/findingresponsibleobjects.html"/><topic label="Querying Heap Objects (OQL)" href="tasks/queryingheapobjects.html"/><topic label="Analyze Class Loader" href="tasks/analyzingclassloader.html"/><topic label="Analyzing Threads" href="tasks/analyzingthreads.html"/><topic label="Analyzing Java Collection Usage" href="tasks/analyzingjavacollectionusage.html"/><topic label="Analyzing Finalizer" href="tasks/analyzingfinalizer.html"/><topic label="Eclipse Equinox Bundle Registry" href="tasks/bundleregistry.html"/><topic label="Comparing Objects" href="tasks/comparingdata.html"/><topic label="Export Data" href="tasks/exportdata.html"/><topic label="Export Heap Dump" href="tasks/exportdump.html"/><topic label="Memory Analyzer Configuration" href="tasks/configure_mat.html"/></topic><topic label="Reference"><topic label="Inspections"><topic label="Leak Identification"><topic label="Component Report" href="reference/inspections/component_report.html"/></topic><topic label="Immediate Dominators" href="reference/inspections/immediate_dominators.html"/><topic label="Group by Value" href="reference/inspections/group_by_value.html"/><topic label="Path to GC Roots" href="reference/inspections/path_to_gc_roots.html"/><topic label="Retained Set" href="reference/inspections/retained_set.html"/><topic label="Top Consumers" href="reference/inspections/top_consumers.html"/><topic label="Unreachable objects" href="reference/inspections/unreachable_objects.html"/></topic><topic label="Query Matrix" href="reference/querymatrix.html"><topic label="Finding Memory Leak" href="reference/findingmemoryleak.html"/><topic label="Analyzing Memory Consumption" href="reference/analyzingmemoryconsumption.html"/></topic><topic label="OQL Syntax" href="reference/oqlsyntax.html"><topic label="SELECT Clause" href="reference/oqlsyntaxselect.html"/><topic label="FROM Clause" href="reference/oqlsyntaxfrom.html"/><topic label="WHERE Clause" href="reference/oqlsyntaxwhere.html"/><topic label="Property Accessors" href="reference/propertyaccessors.html"/><topic label="BNF for the Object Query Language" href="reference/bnfofoql.html"/></topic><topic label="Selecting Queries" href="reference/selectingqueries.html"/><topic label="Icons Assist" href="reference/iconassist.html"/><topic label="Tips and Tricks" href="reference/tipsandtricks.html"/><topic label="Extending Memory Analyzer" href="reference/extendingmat.html"/><topic label="API Reference" href="doc/index.html"/></topic><topic label="New and Noteworthy" href="noteworthy.html"/><topic label="Legal" href="legal.html"/></toc> \ No newline at end of file
diff --git a/plugins/org.eclipse.mat.ui.help/welcome.dita b/plugins/org.eclipse.mat.ui.help/welcome.dita
index a73310b4..fd292cb1 100644
--- a/plugins/org.eclipse.mat.ui.help/welcome.dita
+++ b/plugins/org.eclipse.mat.ui.help/welcome.dita
@@ -53,6 +53,7 @@
<p><xref href="concepts/heapdump.dita" /></p>
<p><xref href="concepts/shallowretainedheap.dita" /></p>
<p><xref href="concepts/dominatortree.dita" /></p>
+ <p><xref href="concepts/reachability.dita" /></p>
<p><xref href="concepts/gcroots.dita"/></p>
</section>
<section>
diff --git a/plugins/org.eclipse.mat.ui.help/welcome.html b/plugins/org.eclipse.mat.ui.help/welcome.html
index 7ab88084..f4d8cc2a 100644
--- a/plugins/org.eclipse.mat.ui.help/welcome.html
+++ b/plugins/org.eclipse.mat.ui.help/welcome.html
@@ -55,6 +55,8 @@
<p class="p"><a class="xref" href="concepts/dominatortree.html">Dominator Tree</a></p>
+ <p class="p"><a class="xref" href="concepts/reachability.html">Reachability</a></p>
+
<p class="p"><a class="xref" href="concepts/gcroots.html">Garbage Collection Roots</a></p>
</div>

Back to the top