当我们new一个String对象时,对应的字符串其实是以char数组的形式存储在String对象内部。不仅将char数组改为byte数组,而且新增了一个coder的成员变量。但是,如果字符串中使用了中文等超出Latin-1表示范围的字符,使用Latin-1就没办法表示了。coder变量代表编码的格式,目前String支持两种编码格式Latin-1和UTF-16。COMPACT_STRINGS属性则是用来控制是否开启String的compact功能。当内存减少之后,进一步导致减少GC次数,进而减少Stop-The-World的频次,同样会提升系统的性能。小结随着JDK的迭代String字符串的内存结构及方法等也在不断地进行演变。这是因为String字符串往往是JVM中占用内存最多的类,通过对它的改造升级,对性能的提升会更加明显。

JDK9对String字符串的新一轮优化

JDK9对String字符串的新一轮优化