public class CompactStringExample { public static void main(String[] args) { String latinString = "Hello"; // 仅包含Latin-1字符 String utf16String = "你好"; // 包含UTF-16字符 // 打印每个字符串的内部字节数组长度 System.out.println("Latin String Length: " + latinString.getBytes().length...
publicclassCompactStringExample{publicstaticvoidmain(String[] args){StringlatinString="Hello";// 仅包含Latin-1字符Stringutf16String="你好";// 包含UTF-16字符// 打印每个字符串的内部字节数组长度System.out.println("Latin String Length: "+ latinString.getBytes().length);// 输出5System.out.println(...
java 代码解读复制代码publicclassCompactStringExample{publicstaticvoidmain(String[]args){String latinString="Hello";// 仅包含Latin-1字符String utf16String="你好";// 包含UTF-16字符// 打印每个字符串的内部字节数组长度System.out.println("Latin String Length: "+latinString.getBytes().length);// 输出...
而在Java 9中,String类引入了一种称为"Compact Strings"的新实现方式,将字符串的表示方式从char数组改为byte数组,并使用一种编码方式将Unicode字符映射到一个或两个字节的表示方式。这种实现方式可以大大减少内存使用,尤其是对于包含大量ASCII字符的字符串。 为什么这么说呢?JDK9中,引入了一个coder标识,用来区分是普...
让我们通过下面的一个简单的测试来看看启用缩小字符串( Compact String)配置和不启用这个配置对性能产生的异同。 long startTime = System.currentTimeMillis(); List strings = IntStream.rangeClosed(1,10_000_000) .mapToObj(Integer::toString) .collect(toList()); long totalTime = System.currentTimeMilli...
Created stringoflength488895in5130ms. 同样的,我们禁用 JVM 的这个参数-XX:-CompactStrings参数选项再来看看输出: Generated10000000strings in936ms. Created stringoflength488895in9727ms. 通过上面的代码,我们可以看到上面 2 个参数修改后对比的输出并不是非常的明显,但是也可以看到有明确的性能提升。
在这里,我们首先使用一个基本的方法来创建 1千万个 String 字符串,然后使用默认开启的配置来看看上面的代码的输出: 代码语言:javascript 复制 Generated10000000stringsin854ms.Created stringoflength488895in5130ms. 同样的,我们禁用 JVM 的这个参数-XX:-CompactStrings参数选项再来看看输出: ...
CompactString在 JVM 中是默认启用的,如果你不想启用,你可以使用下面的参数告诉 JVM 不使用 String 压缩功能: +XX:-CompactStrings coder 是如何工作的 在Java 9 的String类实现中,有关字符串的长度是下面的方法来进行计算的: publicintlength(){returnvalue.length >> coder; ...
-XX:+CompactStrings 在Java 命令行启动时,可以通过使用-XX:+CompactStrings参数来开启 Compact Strings。该参数告诉 Java 虚拟机在启动时启用紧凑字符串(Compact Strings)优化。 以下是使用 Java 命令行启动并开启 Compact Strings 的示例: java -XX:+CompactStrings -jar YourJarFile.jar ...
在这里,我们首先使用一个基本的方法来创建 1千万个 String 字符串,然后使用默认开启的配置来看看上面的代码的输出: Generated 10000000 strings in 854 ms. Created string of length 488895 in 5130 ms. 同样的,我们禁用 JVM 的这个参数-XX:-CompactStrings参数选项再来看看输出: ...