diff agent/src/share/classes/sun/jvm/hotspot/tools/PermStat.java @ 6725:da91efe96a93

6964458: Reimplement class meta-data storage to use native memory Summary: Remove PermGen, allocate meta-data in metaspace linked to class loaders, rewrite GC walking, rewrite and rename metadata to be C++ classes Reviewed-by: jmasa, stefank, never, coleenp, kvn, brutisso, mgerdin, dholmes, jrose, twisti, roland Contributed-by: jmasa <jon.masamitsu@oracle.com>, stefank <stefan.karlsson@oracle.com>, mgerdin <mikael.gerdin@oracle.com>, never <tom.rodriguez@oracle.com>
author coleenp
date Sat, 01 Sep 2012 13:25:18 -0400
parents e3e363b2bf19
children
line wrap: on
line diff
--- a/agent/src/share/classes/sun/jvm/hotspot/tools/PermStat.java	Fri Aug 31 16:39:35 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/tools/PermStat.java	Sat Sep 01 13:25:18 2012 -0400
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -201,7 +201,7 @@
          if (loaderKlass != null) {
             out.print(loaderKlass.getName().asString());
             out.print('@');
-            out.print(loader.getKlass().getHandle());
+            out.print(loader.getKlass().getAddress());
          } else {
             out.print("    null!    ");
          }
@@ -233,47 +233,45 @@
    }
 
    // Don't count the shared empty arrays
-   private static long arraySize(Array arr) {
-     return arr.getLength() != 0L ? arr.getObjectSize() : 0L;
+   private static long arraySize(GenericArray arr) {
+     return arr.getLength() != 0L ? arr.getSize() : 0L;
    }
 
    private long computeSize(InstanceKlass k) {
       long size = 0L;
       // the InstanceKlass object itself
-      size += k.getObjectSize();
+      size += k.getSize();
 
       // Constant pool
       ConstantPool cp = k.getConstants();
-      size += cp.getObjectSize();
-      size += objectSize(cp.getCache());
-      size += objectSize(cp.getTags());
+      size += cp.getSize();
+      if (cp.getCache() != null) {
+        size += cp.getCache().getSize();
+      }
+      size += arraySize(cp.getTags());
 
       // Interfaces
       size += arraySize(k.getLocalInterfaces());
       size += arraySize(k.getTransitiveInterfaces());
 
       // Inner classes
-      size += objectSize(k.getInnerClasses());
+      size += arraySize(k.getInnerClasses());
 
       // Fields
-      size += objectSize(k.getFields());
+      size += arraySize(k.getFields());
 
       // Methods
-      ObjArray methods = k.getMethods();
+      MethodArray methods = k.getMethods();
       int nmethods = (int) methods.getLength();
       if (nmethods != 0L) {
-         size += methods.getObjectSize();
+         size += methods.getSize();
          for (int i = 0; i < nmethods; ++i) {
-            Method m = (Method) methods.getObjAt(i);
-            size += m.getObjectSize();
-            size += objectSize(m.getConstMethod());
+            Method m = methods.at(i);
+            size += m.getSize();
+            size += m.getConstMethod().getSize();
          }
       }
 
-      // MethodOrdering - an int array that records the original
-      // ordering of methods in the class file
-      size += arraySize(k.getMethodOrdering());
-
       return size;
    }
 }