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:45:38 UTC
svn commit: r1702693 -
/lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/RamUsageTester.java
Author: uschindler
Date: Sun Sep 13 01:45:37 2015
New Revision: 1702693
URL: http://svn.apache.org/r1702693
Log:
LUCENE-6795: Improve RamUsageTester in trunk
Modified:
lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/RamUsageTester.java
Modified: lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/RamUsageTester.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/RamUsageTester.java?rev=1702693&r1=1702692&r2=1702693&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/RamUsageTester.java (original)
+++ lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/RamUsageTester.java Sun Sep 13 01:45:37 2015
@@ -188,31 +188,33 @@ public final class RamUsageTester {
*/
@SuppressForbidden(reason = "We need to access private fields of measured objects.")
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()) {
- final PrivilegedAction<Field> act = () -> { f.setAccessible(true); return f; };
- referenceFields.add(AccessController.doPrivileged(act));
+ return AccessController.doPrivileged((PrivilegedAction<ClassCache>) () -> {
+ 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);
+ 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;
+ });
}
}