LUCENE-6795: Improve RamUsageTester in trunk

git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1702693 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Uwe Schindler 2015-09-13 01:45:37 +00:00
parent b8a213ccf7
commit 01adad8899
1 changed files with 24 additions and 22 deletions

View File

@ -188,6 +188,7 @@ public final class RamUsageTester {
*/
@SuppressForbidden(reason = "We need to access private fields of measured objects.")
private static ClassCache createCacheEntry(final Class<?> clazz) {
return AccessController.doPrivileged((PrivilegedAction<ClassCache>) () -> {
ClassCache cachedInfo;
long shallowInstanceSize = RamUsageEstimator.NUM_BYTES_OBJECT_HEADER;
final ArrayList<Field> referenceFields = new ArrayList<>(32);
@ -202,8 +203,8 @@ public final class RamUsageTester {
shallowInstanceSize = RamUsageEstimator.adjustForField(shallowInstanceSize, f);
if (!f.getType().isPrimitive()) {
final PrivilegedAction<Field> act = () -> { f.setAccessible(true); return f; };
referenceFields.add(AccessController.doPrivileged(act));
f.setAccessible(true);
referenceFields.add(f);
}
}
}
@ -213,6 +214,7 @@ public final class RamUsageTester {
RamUsageEstimator.alignObjectSize(shallowInstanceSize),
referenceFields.toArray(new Field[referenceFields.size()]));
return cachedInfo;
});
}
}