Files
javademos/compact-strings/output/04-layout-jdk25-compact-headers-no-compact-strings.txt
T

90 lines
4.3 KiB
Plaintext

$ java -XX:+UseCompactObjectHeaders -XX:-CompactStrings StringLayout (JDK 25)
java.version = 25.0.4.1
vm.flags = -XX:+EnableDynamicAgentLoading -XX:+UseCompactObjectHeaders -XX:-CompactStrings
# Field sizes: 4, 1, 1, 2, 2, 4, 4, 8, 8
# Array element sizes: 4, 1, 1, 2, 2, 4, 4, 8, 8
=== java.lang.String, the class
java.lang.String object internals:
OFF SZ TYPE DESCRIPTION VALUE
0 8 (object header: mark) N/A
8 4 int String.hash N/A
12 1 byte String.coder N/A
13 1 boolean String.hashIsZero N/A
14 2 (alignment/padding gap)
16 4 byte[] String.value N/A
20 4 (object alignment gap)
Instance size: 24 bytes
Space losses: 2 bytes internal + 4 bytes external = 6 bytes total
=== one Latin-1 string and one UTF-16 string, field by field
java.lang.String object internals:
OFF SZ TYPE DESCRIPTION VALUE
0 8 (object header: mark) 0x0008540000000001 (Lilliput)
8 4 int String.hash 0
12 1 byte String.coder 1
13 1 boolean String.hashIsZero false
14 2 (alignment/padding gap)
16 4 byte[] String.value [104, 0, 101, 0, 108, 0, 108, 0, 111, 0]
20 4 (object alignment gap)
Instance size: 24 bytes
Space losses: 2 bytes internal + 4 bytes external = 6 bytes total
java.lang.String object internals:
OFF SZ TYPE DESCRIPTION VALUE
0 8 (object header: mark) 0x0008540000000001 (Lilliput)
8 4 int String.hash 0
12 1 byte String.coder 1
13 1 boolean String.hashIsZero false
14 2 (alignment/padding gap)
16 4 byte[] String.value [104, 0, -84, 32, 108, 0, 108, 0, 111, 0]
20 4 (object alignment gap)
Instance size: 24 bytes
Space losses: 2 bytes internal + 4 bytes external = 6 bytes total
=== the byte[] behind each
[B object internals:
OFF SZ TYPE DESCRIPTION VALUE
0 8 (object header: mark) 0x0008140000000001 (Lilliput)
8 4 (array length) 10
12 10 byte [B.<elements> N/A
22 2 (object alignment gap)
Instance size: 24 bytes
Space losses: 0 bytes internal + 2 bytes external = 2 bytes total
[B object internals:
OFF SZ TYPE DESCRIPTION VALUE
0 8 (object header: mark) 0x0008140000000001 (Lilliput)
8 4 (array length) 10
12 10 byte [B.<elements> N/A
22 2 (object alignment gap)
Instance size: 24 bytes
Space losses: 0 bytes internal + 2 bytes external = 2 bytes total
=== footprint by length (String object + its byte[], via GraphLayout)
chars content coder byte[].length String byte[] total
0 ASCII 1 0 24 16 40
0 U+00E9 1 0 24 16 40
0 U+20AC 1 0 24 16 40
1 ASCII 1 2 24 16 40
1 U+00E9 1 2 24 16 40
1 U+20AC 1 2 24 16 40
5 ASCII 1 10 24 24 48
5 U+00E9 1 10 24 24 48
5 U+20AC 1 10 24 24 48
10 ASCII 1 20 24 32 56
10 U+00E9 1 20 24 32 56
10 U+20AC 1 20 24 32 56
20 ASCII 1 40 24 56 80
20 U+00E9 1 40 24 56 80
20 U+20AC 1 40 24 56 80
40 ASCII 1 80 24 96 120
40 U+00E9 1 80 24 96 120
40 U+20AC 1 80 24 96 120
100 ASCII 1 200 24 216 240
100 U+00E9 1 200 24 216 240
100 U+20AC 1 200 24 216 240
1000 ASCII 1 2000 24 2016 2040
1000 U+00E9 1 2000 24 2016 2040
1000 U+20AC 1 2000 24 2016 2040