blob: d06426bbb699b499e9e9d82ae0e37b0f56d81d14 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2008, 2023 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 2.0
which accompanies this distribution, and is available at
https://www.eclipse.org/legal/epl-2.0/
SPDX-License-Identifier: EPL-2.0
Contributors:
SAP AG - initial API and implementation
IBM Corporation - formatting
-->
<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd" >
<task id="task_findingresponsibleobjects" xml:lang="en-us">
<title>Finding Responsible Objects</title>
<prolog>
<copyright>
<copyryear year=""></copyryear>
<copyrholder>
Copyright (c) 2008, 2023 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 2.0
which accompanies this distribution, and is available at
https://www.eclipse.org/legal/epl-2.0/
</copyrholder>
</copyright>
</prolog>
<taskbody>
<context>
<b>Immediate Dominators</b>
<p>This query finds and aggregates all objects dominating a given
set of objects on class level. It is very useful to quickly find out
who is responsible for a set of objects, as it directly answers
the question "who keeps these objects alive" instead of answering
"who has a reference to these objects". Using the fact that
every object has just one immediate dominator (unlike multiple incoming references)
the tool offers possibility to filter "uninteresting" dominators (e.g. java.* classes)
and directly see the responsible application classes.
</p>
<p>Choice of options:</p>
<ul>
<li>Selecting entries and using the context menu</li>
</ul>
<image href="../mimes/exec_immediate_dominators.png" placement="break">
<alt>screen shot of the context menu</alt>
</image>
<p>
<ul>
<li>
The toolbar command
<menucascade>
<uicontrol>Query Browser</uicontrol>
<uicontrol>Immediate Dominators</uicontrol>
</menucascade>
starts a wizard to select an object set.
</li>
</ul>
</p>
<image href="../mimes/6ac427cd.png" placement="break">
<alt>screen shot execute immediate dominators</alt>
</image>
<p>
The immediate dominators of all char arrays are all objects
responsible for keeping the
<cmdname>char[]</cmdname>
alive. The result will contain most likely
<cmdname>java.lang.String</cmdname>
objects. If you add the skip pattern
<cmdname>java.*</cmdname>
, and you will see the non-JDK classes responsible for the char
arrays.
</p>
</context>
</taskbody>
<related-links>
<link href="../concepts/dominatortree.dita" type="concept">
<linktext>Dominator Tree</linktext>
</link>
</related-links>
</task>