69 return false;
70 }
71 String nm = clazz.getName() + "." + f.getName();
72 if (excludes.isExcluded(nm)) {
73 fieldsExcluded.put(nm, nm);
74 return true;
75 } else {
76 fieldsUsed.put(nm, nm);
77 return false;
78 }
79 }
80 };
81 // Put the closure of root and all objects reachable from root into
82 // bag (depth first), but don't include root:
83 visitor.visit(root);
84 bag.remove(root);
85
86 // Now grab the elements into a vector, and sort it in decreasing size
87 JavaThing[] things = new JavaThing[bag.size()];
88 int i = 0;
89 for (Enumeration e = bag.elements(); e.hasMoreElements(); ) {
90 things[i++] = (JavaThing) e.nextElement();
91 }
92 ArraySorter.sort(things, new Comparer() {
93 public int compare(Object lhs, Object rhs) {
94 JavaThing left = (JavaThing) lhs;
95 JavaThing right = (JavaThing) rhs;
96 int diff = right.getSize() - left.getSize();
97 if (diff != 0) {
98 return diff;
99 }
100 return left.compareTo(right);
101 }
102 });
103 this.reachables = things;
104
105 this.totalSize = root.getSize();
106 for (i = 0; i < things.length; i++) {
107 this.totalSize += things[i].getSize();
108 }
109
114 public JavaHeapObject getRoot() {
115 return root;
116 }
117
118 public JavaThing[] getReachables() {
119 return reachables;
120 }
121
122 public long getTotalSize() {
123 return totalSize;
124 }
125
126 public String[] getExcludedFields() {
127 return excludedFields;
128 }
129
130 public String[] getUsedFields() {
131 return usedFields;
132 }
133
134 private String[] getElements(Hashtable ht) {
135 Object[] keys = ht.keySet().toArray();
136 int len = keys.length;
137 String[] res = new String[len];
138 System.arraycopy(keys, 0, res, 0, len);
139 ArraySorter.sortArrayOfStrings(res);
140 return res;
141 }
142
143 private JavaHeapObject root;
144 private JavaThing[] reachables;
145 private String[] excludedFields;
146 private String[] usedFields;
147 private long totalSize;
148 }
|
69 return false;
70 }
71 String nm = clazz.getName() + "." + f.getName();
72 if (excludes.isExcluded(nm)) {
73 fieldsExcluded.put(nm, nm);
74 return true;
75 } else {
76 fieldsUsed.put(nm, nm);
77 return false;
78 }
79 }
80 };
81 // Put the closure of root and all objects reachable from root into
82 // bag (depth first), but don't include root:
83 visitor.visit(root);
84 bag.remove(root);
85
86 // Now grab the elements into a vector, and sort it in decreasing size
87 JavaThing[] things = new JavaThing[bag.size()];
88 int i = 0;
89 for (Enumeration<JavaHeapObject> e = bag.elements(); e.hasMoreElements(); ) {
90 things[i++] = (JavaThing) e.nextElement();
91 }
92 ArraySorter.sort(things, new Comparer() {
93 public int compare(Object lhs, Object rhs) {
94 JavaThing left = (JavaThing) lhs;
95 JavaThing right = (JavaThing) rhs;
96 int diff = right.getSize() - left.getSize();
97 if (diff != 0) {
98 return diff;
99 }
100 return left.compareTo(right);
101 }
102 });
103 this.reachables = things;
104
105 this.totalSize = root.getSize();
106 for (i = 0; i < things.length; i++) {
107 this.totalSize += things[i].getSize();
108 }
109
114 public JavaHeapObject getRoot() {
115 return root;
116 }
117
118 public JavaThing[] getReachables() {
119 return reachables;
120 }
121
122 public long getTotalSize() {
123 return totalSize;
124 }
125
126 public String[] getExcludedFields() {
127 return excludedFields;
128 }
129
130 public String[] getUsedFields() {
131 return usedFields;
132 }
133
134 private String[] getElements(Hashtable<?, ?> ht) {
135 Object[] keys = ht.keySet().toArray();
136 int len = keys.length;
137 String[] res = new String[len];
138 System.arraycopy(keys, 0, res, 0, len);
139 ArraySorter.sortArrayOfStrings(res);
140 return res;
141 }
142
143 private JavaHeapObject root;
144 private JavaThing[] reachables;
145 private String[] excludedFields;
146 private String[] usedFields;
147 private long totalSize;
148 }
|