Java 9 中的紧凑字符串是什么?

javaobject oriented programmingprogramming更新于 2025/9/10 15:08:17

自 Java 9 以来,JVM 使用名为紧凑字符串优化字符串。字符串可以表示为 byte[] 数组,而不是 char[]数组。我们可以使用 UTF-16 或 Latin-1 来为每个字符生成一个或两个字节。如果 JVM 检测到字符串仅包含ISO-8859-1/Latin-1字符,则字符串在内部使用每个字符一个字节。

在创建字符串时会检测字符串是否可以用紧凑字符串表示。此功能默认启用,可使用 -XX:-CompactStrings 关闭。它不会恢复为 char[] 实现,并将所有字符串存储为 UTF-16。

// 在 Java 8 中
public class String {
   private final char[] value; // 将字符存储在字符串中
      ---------
}

// 在 Java 9 中
public class String {
   private final byte[] value; // 将字符存储在字符串中
   private final byte coder; // 一个标志,用于指示此字符串是使用每个字符 1 个字节还是每个字符 2 个字节

      ---------


相关文章


有用资源