java.version = 26.0.2.1
# VM mode: 64 bits
# Compressed references (oops): 0-bit shift
# Compressed class pointers: 0-bit shift and 0x3E000000 base
# Object alignment: 8 bytes
#                       ref, bool, byte, char, shrt,  int,  flt,  lng,  dbl
# Field sizes:            4,    1,    1,    2,    2,    4,    4,    8,    8
# Array element sizes:    4,    1,    1,    2,    2,    4,    4,    8,    8
# Array base offsets:    16,   16,   16,   16,   16,   16,   16,   16,   16


=== java.lang.Object
java.lang.Object object internals:
OFF  SZ   TYPE DESCRIPTION               VALUE
  0   8        (object header: mark)     N/A
  8   4        (object header: class)    N/A
 12   4        (object alignment gap)    
Instance size: 16 bytes
Space losses: 0 bytes internal + 4 bytes external = 4 bytes total


=== Point { int x; int y; }
HeaderDemo$Point object internals:
OFF  SZ   TYPE DESCRIPTION               VALUE
  0   8        (object header: mark)     N/A
  8   4        (object header: class)    N/A
 12   4    int Point.x                   N/A
 16   4    int Point.y                   N/A
 20   4        (object alignment gap)    
Instance size: 24 bytes
Space losses: 0 bytes internal + 4 bytes external = 4 bytes total


=== Order { long id; int quantity; boolean paid; String customer; }
HeaderDemo$Order object internals:
OFF  SZ               TYPE DESCRIPTION               VALUE
  0   8                    (object header: mark)     N/A
  8   4                    (object header: class)    N/A
 12   4                int Order.quantity            N/A
 16   8               long Order.id                  N/A
 24   1            boolean Order.paid                N/A
 25   3                    (alignment/padding gap)   
 28   4   java.lang.String Order.customer            N/A
Instance size: 32 bytes
Space losses: 3 bytes internal + 0 bytes external = 3 bytes total


=== java.lang.Long and java.lang.Integer (boxed values)
java.lang.Long object internals:
OFF  SZ   TYPE DESCRIPTION               VALUE
  0   8        (object header: mark)     0x0000000000000001 (non-biasable; age: 0)
  8   4        (object header: class)    0x001a15d0
 12   4        (alignment/padding gap)   
 16   8   long Long.value                123456789
Instance size: 24 bytes
Space losses: 4 bytes internal + 0 bytes external = 4 bytes total

java.lang.Integer object internals:
OFF  SZ   TYPE DESCRIPTION               VALUE
  0   8        (object header: mark)     0x0000000000000001 (non-biasable; age: 0)
  8   4        (object header: class)    0x0019f570
 12   4    int Integer.value             123456
Instance size: 16 bytes
Space losses: 0 bytes internal + 0 bytes external = 0 bytes total


=== int[3]
[I object internals:
OFF  SZ   TYPE DESCRIPTION               VALUE
  0   8        (object header: mark)     0x0000000000000001 (non-biasable; age: 0)
  8   4        (object header: class)    0x00174360
 12   4        (array length)            3
 16  12    int [I.<elements>             N/A
 28   4        (object alignment gap)    
Instance size: 32 bytes
Space losses: 0 bytes internal + 4 bytes external = 4 bytes total


=== What it adds up to: one million objects
1,000,000 boxed Integer values in an ArrayList : 20,861,992 bytes
1,000,000 boxed Long values in an ArrayList    : 28,861,992 bytes
1,000,000 Point objects in an ArrayList        : 28,861,992 bytes
