Java / Java 11
What are compact Strings in Java?
Since Java 9, the JVM optimizes strings by using a new feature called Compact Strings. Instead of having a char[] array, a string can be represented as a byte[] array. We can use either UTF-16 or Latin-1 to produce either one or two bytes per character. If JVM detects the string contains only ISO-8859-1/Latin-1 characters, then string uses one byte per character internally.
This feature is enabled by default and switches off using the -XX:-CompactStrings.
More Related questions...