Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java stringbuilder可以容纳的最大字符数_Java_Stringbuilder_Max - Fatal编程技术网

Java stringbuilder可以容纳的最大字符数

Java stringbuilder可以容纳的最大字符数,java,stringbuilder,max,Java,Stringbuilder,Max,我需要写10000 x 30000个字符。单个stringbuilder能够容纳所有字符吗?还是应该考虑一组stringbuilder?我没有访问测试用例的权限,因此我无法亲自验证它。希望我能在这里找到答案 提前谢谢 编辑: 我尝试使用循环添加10000 x 30000个字符。我得到以下例外情况 Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arr

我需要写10000 x 30000个字符。单个stringbuilder能够容纳所有字符吗?还是应该考虑一组stringbuilder?我没有访问测试用例的权限,因此我无法亲自验证它。希望我能在这里找到答案

提前谢谢

编辑:

我尝试使用循环添加10000 x 30000个字符。我得到以下例外情况

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2367)
at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:130)
at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:114)
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:415)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at Test.main(Test.java:19)

如何处理这个“java堆空间”?

长度是一个int,因此如果您有内存,它最多可以容纳2GChar(4GB)。您将使用“仅”600MB(3亿字节,每个字符2字节)。只是要小心你最终复制了多少份。。。i、 e.toString()。

您需要担心的是最大堆大小。使用单个或多个StringBuilder对象不会有任何区别

只要字符串生成器中包含的字符序列的长度不超过容量,就不需要分配新的内部缓冲区。如果内部缓冲区溢出,它会自动变大。它提供了StringBuilder实例内存此时可以容纳的最大字符数

我尝试使用循环添加10000x30000个字符,但它给出了错误。请参阅编辑。您需要使用
-Xms1024m-Xmx1536m
命令行选项增加VM可用的堆空间,该选项将初始分配设置为1GB,最大为1.5GB。如果您在32位环境中运行,这可能会有问题。