| <?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> |