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


Reply via email to