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. 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