< prev index next >

src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/HSDB.java

Print this page




  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 package sun.jvm.hotspot;
  26 
  27 import java.io.*;
  28 import java.awt.*;
  29 import java.awt.event.*;
  30 import javax.swing.*;
  31 import java.util.*;
  32 
  33 import sun.jvm.hotspot.code.*;
  34 import sun.jvm.hotspot.compiler.*;
  35 import sun.jvm.hotspot.debugger.*;

  36 import sun.jvm.hotspot.gc.parallel.*;
  37 import sun.jvm.hotspot.gc.shared.*;
  38 import sun.jvm.hotspot.gc.g1.*;
  39 import sun.jvm.hotspot.interpreter.*;
  40 import sun.jvm.hotspot.memory.*;
  41 import sun.jvm.hotspot.oops.*;
  42 import sun.jvm.hotspot.runtime.*;
  43 import sun.jvm.hotspot.ui.*;
  44 import sun.jvm.hotspot.ui.tree.*;
  45 import sun.jvm.hotspot.ui.classbrowser.*;
  46 import sun.jvm.hotspot.utilities.*;
  47 
  48 /** The top-level HotSpot Debugger. FIXME: make this an embeddable
  49     component! (Among other things, figure out what to do with the
  50     menu bar...) */
  51 
  52 public class HSDB implements ObjectHistogramPanel.Listener, SAListener {
  53   public static void main(String[] args) {
  54     new HSDB(args).run();
  55   }


1091                             bad = false;
1092                           } else if (region.isHumongous()) {
1093                             anno = "Humongous ";
1094                             bad = false;
1095                           } else if (region.isPinned()) {
1096                             anno = "Pinned ";
1097                             bad = false;
1098                           } else if (region.isOld()) {
1099                             anno = "Old ";
1100                             bad = false;
1101                           }
1102                         } else if (collHeap instanceof ParallelScavengeHeap) {
1103                           ParallelScavengeHeap heap = (ParallelScavengeHeap) collHeap;
1104                           if (heap.youngGen().isIn(handle)) {
1105                             anno = "PSYoungGen ";
1106                             bad = false;
1107                           } else if (heap.oldGen().isIn(handle)) {
1108                             anno = "PSOldGen ";
1109                             bad = false;
1110                           }



1111                         } else {
1112                           // Optimistically assume the oop isn't bad
1113                           anno = "[Unknown generation] ";
1114                           bad = false;
1115                         }
1116 
1117                         if (!bad) {
1118                           try {
1119                             Oop oop = VM.getVM().getObjectHeap().newOop(handle);
1120                             if (oop instanceof Instance) {
1121                                 // Java-level objects always have workable names
1122                               anno = anno + oop.getKlass().getName().asString();
1123                             } else {
1124                               ByteArrayOutputStream bos = new ByteArrayOutputStream();
1125                               Oop.printOopValueOn(oop, new PrintStream(bos));
1126                               anno = anno + bos.toString();
1127                             }
1128                           }
1129                           catch (AddressException e) {
1130                             anno += "CORRUPT OOP";




  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 package sun.jvm.hotspot;
  26 
  27 import java.io.*;
  28 import java.awt.*;
  29 import java.awt.event.*;
  30 import javax.swing.*;
  31 import java.util.*;
  32 
  33 import sun.jvm.hotspot.code.*;
  34 import sun.jvm.hotspot.compiler.*;
  35 import sun.jvm.hotspot.debugger.*;
  36 import sun.jvm.hotspot.gc.epsilon.*;
  37 import sun.jvm.hotspot.gc.parallel.*;
  38 import sun.jvm.hotspot.gc.shared.*;
  39 import sun.jvm.hotspot.gc.g1.*;
  40 import sun.jvm.hotspot.interpreter.*;
  41 import sun.jvm.hotspot.memory.*;
  42 import sun.jvm.hotspot.oops.*;
  43 import sun.jvm.hotspot.runtime.*;
  44 import sun.jvm.hotspot.ui.*;
  45 import sun.jvm.hotspot.ui.tree.*;
  46 import sun.jvm.hotspot.ui.classbrowser.*;
  47 import sun.jvm.hotspot.utilities.*;
  48 
  49 /** The top-level HotSpot Debugger. FIXME: make this an embeddable
  50     component! (Among other things, figure out what to do with the
  51     menu bar...) */
  52 
  53 public class HSDB implements ObjectHistogramPanel.Listener, SAListener {
  54   public static void main(String[] args) {
  55     new HSDB(args).run();
  56   }


1092                             bad = false;
1093                           } else if (region.isHumongous()) {
1094                             anno = "Humongous ";
1095                             bad = false;
1096                           } else if (region.isPinned()) {
1097                             anno = "Pinned ";
1098                             bad = false;
1099                           } else if (region.isOld()) {
1100                             anno = "Old ";
1101                             bad = false;
1102                           }
1103                         } else if (collHeap instanceof ParallelScavengeHeap) {
1104                           ParallelScavengeHeap heap = (ParallelScavengeHeap) collHeap;
1105                           if (heap.youngGen().isIn(handle)) {
1106                             anno = "PSYoungGen ";
1107                             bad = false;
1108                           } else if (heap.oldGen().isIn(handle)) {
1109                             anno = "PSOldGen ";
1110                             bad = false;
1111                           }
1112                         } else if (collHeap instanceof EpsilonHeap) {
1113                           anno = "Epsilon ";
1114                           bad = false;
1115                         } else {
1116                           // Optimistically assume the oop isn't bad
1117                           anno = "[Unknown generation] ";
1118                           bad = false;
1119                         }
1120 
1121                         if (!bad) {
1122                           try {
1123                             Oop oop = VM.getVM().getObjectHeap().newOop(handle);
1124                             if (oop instanceof Instance) {
1125                                 // Java-level objects always have workable names
1126                               anno = anno + oop.getKlass().getName().asString();
1127                             } else {
1128                               ByteArrayOutputStream bos = new ByteArrayOutputStream();
1129                               Oop.printOopValueOn(oop, new PrintStream(bos));
1130                               anno = anno + bos.toString();
1131                             }
1132                           }
1133                           catch (AddressException e) {
1134                             anno += "CORRUPT OOP";


< prev index next >