History

My first initial commit with all of mine experimental changes.

Dmitry Kabak (userdima committed 13 years ago

Commit d37b88d1 parent 3f5b46618352 files · +2598093 −-8690Browse files

Showing the changes to java/pkg/com/sun/tools/hat/internal/server/ReachableQuery.java (1 of 18352 files). Show all

Unified · Split

java/pkg/com/sun/tools/hat/internal/server/ReachableQuery.java+90−0
@@ -0,0 +1,90 @@
1+/*
2+ * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
3+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4+ *
5+ * This code is free software; you can redistribute it and/or modify it
6+ * under the terms of the GNU General Public License version 2 only, as
7+ * published by the Free Software Foundation. Oracle designates this
8+ * particular file as subject to the "Classpath" exception as provided
9+ * by Oracle in the LICENSE file that accompanied this code.
10+ *
11+ * This code is distributed in the hope that it will be useful, but WITHOUT
12+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14+ * version 2 for more details (a copy is included in the LICENSE file that
15+ * accompanied this code).
16+ *
17+ * You should have received a copy of the GNU General Public License version
18+ * 2 along with this work; if not, write to the Free Software Foundation,
19+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20+ *
21+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22+ * or visit www.oracle.com if you need additional information or have any
23+ * questions.
24+ */
25+
26+
27+/*
28+ * The Original Code is HAT. The Initial Developer of the
29+ * Original Code is Bill Foote, with contributions from others
30+ * at JavaSoft/Sun.
31+ */
32+
33+package com.sun.tools.hat.internal.server;
34+
35+import com.sun.tools.hat.internal.model.*;
36+
37+/**
38+ *
39+ * @author Bill Foote
40+ */
41+
42+
43+class ReachableQuery extends QueryHandler {
44+ // We inherit printFullClass from ClassQuery
45+
46+
47+ public ReachableQuery() {
48+ }
49+
50+ public void run() {
51+ startHtml("Objects Reachable From " + query);
52+ long id = parseHex(query);
53+ JavaHeapObject root = snapshot.findThing(id);
54+ ReachableObjects ro = new ReachableObjects(root,
55+ snapshot.getReachableExcludes());
56+ // Now, print out the sorted list, but start with root
57+ long totalSize = ro.getTotalSize();
58+ JavaThing[] things = ro.getReachables();
59+ long instances = things.length;
60+
61+ out.print("<strong>");
62+ printThing(root);
63+ out.println("</strong><br>");
64+ out.println("<br>");
65+ for (int i = 0; i < things.length; i++) {
66+ printThing(things[i]);
67+ out.println("<br>");
68+ }
69+
70+ printFields(ro.getUsedFields(), "Data Members Followed");
71+ printFields(ro.getExcludedFields(), "Excluded Data Members");
72+ out.println("<h2>Total of " + instances + " instances occupying " + totalSize + " bytes.</h2>");
73+
74+ endHtml();
75+ }
76+
77+ private void printFields(String[] fields, String title) {
78+ if (fields.length == 0) {
79+ return;
80+ }
81+ out.print("<h3>");
82+ print(title);
83+ out.println("</h3>");
84+
85+ for (int i = 0; i < fields.length; i++) {
86+ print(fields[i]);
87+ out.println("<br>");
88+ }
89+ }
90+}