Java 9 中的 Compact Strings 是什么?


自 Java 9 起,JVM 优化了字符串,使用了名为Compact Strings 的新功能。字符串不再采用 char[array,而是表示为 byte[] 数组。我们可以使用 UTF-16Latin-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

      ---------
}

更新日期:19-Mar-2020

285 次浏览

开启你的职业生涯

通过完成课程获得认证

开始
广告