Java 9부터 JVM은 컴팩트 라는 새로운 기능을 사용하여 문자열을 최적화합니다. 문자열 . char[ 대신 ] 배열 , 문자열은 byte[]로 표현될 수 있습니다. 정렬. UTF-16을 사용할 수 있습니다. 또는 라틴-1 문자당 1 또는 2바이트를 생성합니다. JVM이 문자열에 ISO-8859-1/Latin-1만 포함된 것을 감지하는 경우 문자열은 내부적으로 문자당 1바이트를 사용합니다.
문자열은 간결한 문자열로 나타낼 수 있으며 문자열 생성 시 감지되지 않습니다. 이 기능은 기본적으로 활성화되어 있으며 -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 --------- }