< prev index next >

src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/ObjectHeap.java

Print this page




 216   private void iterateSubtypes(HeapVisitor visitor, final Klass k) {
 217     iterateLiveRegions(collectLiveRegions(), visitor, new ObjectFilter() {
 218           public boolean canInclude(Oop obj) {
 219             Klass tk = obj.getKlass();
 220             // null Klass is seen sometimes!
 221             return (tk != null && tk.isSubtypeOf(k));
 222           }
 223         });
 224   }
 225 
 226   private void iterateLiveRegions(List liveRegions, HeapVisitor visitor, ObjectFilter of) {
 227     // Summarize size
 228     long totalSize = 0;
 229     for (int i = 0; i < liveRegions.size(); i += 2) {
 230       Address bottom = (Address) liveRegions.get(i);
 231       Address top    = (Address) liveRegions.get(i+1);
 232       totalSize += top.minus(bottom);
 233     }
 234     visitor.prologue(totalSize);
 235 
 236     CollectedHeap heap = VM.getVM().getUniverse().heap();
 237 
 238     if (heap instanceof GenCollectedHeap) {
 239       GenCollectedHeap genHeap = (GenCollectedHeap) heap;
 240       Generation genOld = genHeap.getGen(1);
 241     }
 242 
 243     for (int i = 0; i < liveRegions.size(); i += 2) {
 244       Address bottom = (Address) liveRegions.get(i);
 245       Address top    = (Address) liveRegions.get(i+1);
 246 
 247       try {
 248         // Traverses the space from bottom to top
 249         OopHandle handle = bottom.addOffsetToAsOopHandle(0);
 250 
 251         while (handle.lessThan(top)) {
 252           Oop obj = null;
 253 
 254           try {
 255             obj = newOop(handle);
 256           } catch (UnknownOopException exp) {
 257             if (DEBUG) {
 258               throw new RuntimeException(" UnknownOopException  " + exp);
 259             }
 260           }
 261           if (obj == null) {
 262               throw new UnknownOopException();




 216   private void iterateSubtypes(HeapVisitor visitor, final Klass k) {
 217     iterateLiveRegions(collectLiveRegions(), visitor, new ObjectFilter() {
 218           public boolean canInclude(Oop obj) {
 219             Klass tk = obj.getKlass();
 220             // null Klass is seen sometimes!
 221             return (tk != null && tk.isSubtypeOf(k));
 222           }
 223         });
 224   }
 225 
 226   private void iterateLiveRegions(List liveRegions, HeapVisitor visitor, ObjectFilter of) {
 227     // Summarize size
 228     long totalSize = 0;
 229     for (int i = 0; i < liveRegions.size(); i += 2) {
 230       Address bottom = (Address) liveRegions.get(i);
 231       Address top    = (Address) liveRegions.get(i+1);
 232       totalSize += top.minus(bottom);
 233     }
 234     visitor.prologue(totalSize);
 235 







 236     for (int i = 0; i < liveRegions.size(); i += 2) {
 237       Address bottom = (Address) liveRegions.get(i);
 238       Address top    = (Address) liveRegions.get(i+1);
 239 
 240       try {
 241         // Traverses the space from bottom to top
 242         OopHandle handle = bottom.addOffsetToAsOopHandle(0);
 243 
 244         while (handle.lessThan(top)) {
 245           Oop obj = null;
 246 
 247           try {
 248             obj = newOop(handle);
 249           } catch (UnknownOopException exp) {
 250             if (DEBUG) {
 251               throw new RuntimeException(" UnknownOopException  " + exp);
 252             }
 253           }
 254           if (obj == null) {
 255               throw new UnknownOopException();


< prev index next >