Java 9 中的 Compact Strings 是什么?
自 Java 9 起,JVM 优化了字符串,使用了名为Compact Strings 的新功能。字符串不再采用 char[] array,而是表示为 byte[] 数组。我们可以使用 UTF-16 或 Latin-1 生成每个字符一或两个字节。如果 JVM 检测到字符串只包含 ISO-8859-1/Latin-1 字符,那么该字符串将在内部每个字符使用一个字节。
创建字符串时即可检测到字符串可否表示为 Compact 字符串。该功能默认已启用,可以使用 -XX:-CompactStrings 关闭。它不会还原为 char[] 实现,并会将所有字符串存储为 UTF-16.
// In Java 8 public class String { private final char[] value; // Stores characters in the string --------- } // In Java 9 public class String { private final byte[] value; // Stores characters in the string private final byte coder; // a flag whether to use 1 byte per character or 2 bytes per characters for this string --------- }
广告