Proxy.isProxyClass scalability

Peter Levart peter.levart at gmail.com
Fri Jan 25 16:37:06 UTC 2013


On 01/25/2013 05:34 PM, Aleksey Shipilev wrote:
> On 01/25/2013 08:02 PM, Peter Levart wrote:
>> On 01/25/2013 06:35 AM, David Holmes wrote:
>>> On 25/01/2013 2:36 AM, Peter Levart wrote:
>>>> On 01/24/2013 04:45 PM, Peter Levart wrote:
>> ...so it seems that in both cases, adding a boolean to j.l.Class wastes
>> 8 bytes per Class object :-(
> Seems to be the case, we are hitting the 8-byte alignment boundary.
>
> java-object-layout [1] on jdk7u12:
>
> $ java -jar ~/projects/java-object-layout/target/java-object-layout.jar
> java.lang.Class
> Running 64-bit HotSpot VM.
> Using compressed references with 3-bit shift.
> Objects are 8 bytes aligned.
>
> java.lang.Class
>   offset  size            type description
>        0    12                 (assumed to be the object header)
>       12     4     Constructor Class.cachedConstructor
>       16     4           Class Class.newInstanceCallerCache
>       20     4          String Class.name
>       24     4   SoftReference Class.declaredFields
>       28     4   SoftReference Class.publicFields
>       32     4   SoftReference Class.declaredMethods
>       36     4   SoftReference Class.publicMethods
>       40     4   SoftReference Class.declaredConstructors
>       44     4   SoftReference Class.publicConstructors
>       48     4   SoftReference Class.declaredPublicFields
>       52     4   SoftReference Class.declaredPublicMethods
>       56     4 ClassRepository Class.genericInfo
>       60     4        Object[] Class.enumConstants
>       64     4             Map Class.enumConstantDirectory
>       68     4             Map Class.annotations
>       72     4             Map Class.declaredAnnotations
>       76     4  AnnotationType Class.annotationType
>       80     4   ClassValueMap Class.classValueMap
>       84    12                 (alignment/padding gap)
What's this? why 12 bytes?
>       96     4             int Class.classRedefinedCount
>      100     4             int Class.lastRedefinedCount
>      104                       (object boundary, size estimate)
>
> But, otherwise, can't we use java.lang.ClassValue to associate this flag
> with each class?
>
> -Aleksey.
>
> [1] https://github.com/shipilev/java-field-layout
>




More information about the core-libs-dev mailing list