Proxy.isProxyClass scalability
Peter Levart
peter.levart at gmail.com
Fri Jan 25 16:34:26 UTC 2013
Hi David,
I was surprised to see Usafe report these offsets. See below:
java.lang.Class *instance* field offsets:
Field Type Field Name Offset
---------- ---------- ------
Constructor cachedConstructor 12
Class newInstanceCallerCache 16
String name 20
SoftReference reflectionData 24
ClassRepository genericInfo 28
Object[] enumConstants 32
Map enumConstantDirectory 36
Map annotations 40
Map declaredAnnotations 44
AnnotationType annotationType 48
ClassValueMap classValueMap *52*
Why the *24 bytes* gap between /classValueMap/ and /classRedefinedCount/
fields?
int classRedefinedCount *80*
int lastAnnotationsRedefinedCount 84
java.lang.String *static* field offsets:
Field Type Field Name Offset
---------- ---------- ------
ObjectStreamField[] serialPersistentFields 96
Comparator CASE_INSENSITIVE_ORDER 100
long serialVersionUID 104
int HASHING_SEED 112
The 64 bit pointers variant:
java.lang.Class instance field offsets:
Field Type Field Name Offset
---------- ---------- ------
Constructor cachedConstructor 16
Class newInstanceCallerCache 24
String name 32
SoftReference reflectionData 40
ClassRepository genericInfo 48
Object[] enumConstants 56
Map enumConstantDirectory 64
Map annotations 72
Map declaredAnnotations 80
AnnotationType annotationType 88
ClassValueMap classValueMap *96*
*24 bytes* gap here too!
int classRedefinedCount *128*
int lastAnnotationsRedefinedCount 132
java.lang.String static field offsets:
Field Type Field Name Offset
---------- ---------- ------
ObjectStreamField[] serialPersistentFields 144
Comparator CASE_INSENSITIVE_ORDER 152
long serialVersionUID 160
int HASHING_SEED 168
Might it be that the "classRedefinedCount" field offset is fixed somehow
in VM, since the VM has to update it? Should there be VM changes also to
accomodate ReflectionData changes? Are there VM fields inserted here
that don't have a Java mapping?
Regards, Peter
More information about the core-libs-dev
mailing list