< prev index next >
src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/memory/Universe.java
Print this page
@@ -22,21 +22,30 @@
*
*/
package sun.jvm.hotspot.memory;
-import java.io.*;
-import java.util.*;
-import sun.jvm.hotspot.debugger.*;
+import java.io.PrintStream;
+import java.util.Observable;
+import java.util.Observer;
+
+import sun.jvm.hotspot.debugger.Address;
+import sun.jvm.hotspot.debugger.OopHandle;
import sun.jvm.hotspot.gc.cms.CMSHeap;
-import sun.jvm.hotspot.gc.serial.SerialHeap;
-import sun.jvm.hotspot.gc.shared.*;
import sun.jvm.hotspot.gc.g1.G1CollectedHeap;
-import sun.jvm.hotspot.gc.parallel.*;
-import sun.jvm.hotspot.oops.*;
-import sun.jvm.hotspot.types.*;
-import sun.jvm.hotspot.runtime.*;
+import sun.jvm.hotspot.gc.parallel.ParallelScavengeHeap;
+import sun.jvm.hotspot.gc.serial.SerialHeap;
+import sun.jvm.hotspot.gc.shared.CollectedHeap;
+import sun.jvm.hotspot.gc.z.ZCollectedHeap;
+import sun.jvm.hotspot.oops.Oop;
+import sun.jvm.hotspot.runtime.BasicType;
+import sun.jvm.hotspot.runtime.VM;
+import sun.jvm.hotspot.runtime.VirtualConstructor;
+import sun.jvm.hotspot.types.AddressField;
+import sun.jvm.hotspot.types.CIntegerField;
+import sun.jvm.hotspot.types.Type;
+import sun.jvm.hotspot.types.TypeDataBase;
public class Universe {
private static AddressField collectedHeapField;
private static VirtualConstructor heapConstructor;
@@ -70,20 +79,37 @@
initialize(VM.getVM().getTypeDataBase());
}
});
}
+ private static boolean typeExists(TypeDataBase db, String type) {
+ try {
+ db.lookupType(type);
+ } catch (RuntimeException e) {
+ return false;
+ }
+ return true;
+ }
+
+ private static void addHeapTypeIfInDB(TypeDataBase db, Class heapClass) {
+ String heapName = heapClass.getSimpleName();
+ if (typeExists(db, heapName)) {
+ heapConstructor.addMapping(heapName, heapClass);
+ }
+ }
+
private static synchronized void initialize(TypeDataBase db) {
Type type = db.lookupType("Universe");
collectedHeapField = type.getAddressField("_collectedHeap");
heapConstructor = new VirtualConstructor(db);
- heapConstructor.addMapping("CMSHeap", CMSHeap.class);
- heapConstructor.addMapping("SerialHeap", SerialHeap.class);
- heapConstructor.addMapping("ParallelScavengeHeap", ParallelScavengeHeap.class);
- heapConstructor.addMapping("G1CollectedHeap", G1CollectedHeap.class);
+ addHeapTypeIfInDB(db, CMSHeap.class);
+ addHeapTypeIfInDB(db, SerialHeap.class);
+ addHeapTypeIfInDB(db, ParallelScavengeHeap.class);
+ addHeapTypeIfInDB(db, G1CollectedHeap.class);
+ addHeapTypeIfInDB(db, ZCollectedHeap.class);
mainThreadGroupField = type.getOopField("_main_thread_group");
systemThreadGroupField = type.getOopField("_system_thread_group");
boolArrayKlassField = type.getAddressField("_boolArrayKlassObj");
< prev index next >