You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by us...@apache.org on 2015/09/13 03:39:01 UTC

svn commit: r1702692 - /lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/util/RamUsageTester.java

Author: uschindler
Date: Sun Sep 13 01:39:01 2015
New Revision: 1702692

URL: http://svn.apache.org/r1702692
Log:
LUCENE-6795: Improve RamUsageTester in 5.x (no lambdas available)

Modified:
    lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/util/RamUsageTester.java

Modified: lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/util/RamUsageTester.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/util/RamUsageTester.java?rev=1702692&r1=1702691&r2=1702692&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/util/RamUsageTester.java (original)
+++ lucene/dev/branches/branch_5x/lucene/test-framework/src/java/org/apache/lucene/util/RamUsageTester.java Sun Sep 13 01:39:01 2015
@@ -187,37 +187,37 @@ public final class RamUsageTester {
    * a given class.
    */
   private static ClassCache createCacheEntry(final Class<?> clazz) {
-    ClassCache cachedInfo;
-    long shallowInstanceSize = RamUsageEstimator.NUM_BYTES_OBJECT_HEADER;
-    final ArrayList<Field> referenceFields = new ArrayList<>(32);
-    for (Class<?> c = clazz; c != null; c = c.getSuperclass()) {
-      if (c == Class.class) {
-        // prevent inspection of Class' fields, throws SecurityException in Java 9!
-        continue; 
-      }
-      final Field[] fields = c.getDeclaredFields();
-      for (final Field f : fields) {
-        if (!Modifier.isStatic(f.getModifiers())) {
-          shallowInstanceSize = RamUsageEstimator.adjustForField(shallowInstanceSize, f);
-
-          if (!f.getType().isPrimitive()) {
-            referenceFields.add(AccessController.doPrivileged(new PrivilegedAction<Field>() {
-              @Override
-              @SuppressForbidden(reason = "We need to access private fields of measured objects.")
-              public Field run() {
+    return AccessController.doPrivileged(new PrivilegedAction<ClassCache>() {
+      @Override
+      @SuppressForbidden(reason = "We need to access private fields of measured objects.")
+      public ClassCache run() {
+        ClassCache cachedInfo;
+        long shallowInstanceSize = RamUsageEstimator.NUM_BYTES_OBJECT_HEADER;
+        final ArrayList<Field> referenceFields = new ArrayList<>(32);
+        for (Class<?> c = clazz; c != null; c = c.getSuperclass()) {
+          if (c == Class.class) {
+            // prevent inspection of Class' fields, throws SecurityException in Java 9!
+            continue; 
+          }
+          final Field[] fields = c.getDeclaredFields();
+          for (final Field f : fields) {
+            if (!Modifier.isStatic(f.getModifiers())) {
+              shallowInstanceSize = RamUsageEstimator.adjustForField(shallowInstanceSize, f);
+    
+              if (!f.getType().isPrimitive()) {
                 f.setAccessible(true);
-                return f;
+                referenceFields.add(f);
               }
-            }));
+            }
           }
         }
-      }
-    }
 
-    cachedInfo = new ClassCache(
-        RamUsageEstimator.alignObjectSize(shallowInstanceSize), 
-        referenceFields.toArray(new Field[referenceFields.size()]));
-    return cachedInfo;
+        cachedInfo = new ClassCache(
+            RamUsageEstimator.alignObjectSize(shallowInstanceSize), 
+            referenceFields.toArray(new Field[referenceFields.size()]));
+        return cachedInfo;
+      }
+    });
   }
 
 }