java中一个String可以有多大

对于java中有2种创建String的方式第一种: String a = "hello world" 第二种 String b = new String("hello world")
一个字符串的大小限制有如下
1:常量池大小(1.8移到堆中)的限制 堆内存的限制
2: 常量池 utf-8字符串的结构 tag [u1] length [u2] bytes [length] u2为无符号16bit 长度最大为65535 bytes
3: new String 结构 为 char[] + hash char 数组最大值取决于 int :
Array.newInstance(char.class, Integer.MAX_VALUE-1); java.lang.OutOfMemoryError: Requested array size exceeds VM limit
Array.newInstance(char.class, Integer.MAX_VALUE-2); java.lang.OutOfMemoryError: Java heap space

你可能感兴趣的:(java中一个String可以有多大)