src/share/classes/com/sun/tools/hat/internal/model/ReachableObjects.java

Print this page




  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 }