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
33package com.sun.tools.hat.internal.server;
34
35import com.sun.tools.hat.internal.model.*;
36
37/**
38 *
39 * @author Bill Foote
40 */
41
42
43class 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}