Skip to main content

One post tagged with "string"

View All Tags

· 7 min read
Bartek Jabłoński

In short:

  • The memory of the String object consists of 24 bytes for metadata + the number of characters times 1 byte or 2 bytes depending on the coder value
    • Metadata: mark word x2 (4 bytes x2 = 8 bytes), class word (4 bytes), array reference byte[] or char[] (4 byte), hash (4 byte), hashIsZero (1 byte), coder (1 byte), padding (2 byte)
  • The String object has 2 additional flags:
    • when coder =1 then UTF-16 encoding (2 bytes per character)
    • when coder = 0 then LATIN-1 encoding (1 byte per character)
    • hashIsZero is a flag that tells whether the hash calculation has already been performed