Maximum number of characters stringbuilder can accommodate

随声附和 提交于 2019-12-05 21:35:19

问题


I need to write 10,000 x 30,000 characters. will a single stringbuilder be able to acomodate all characters or should I think of an array of stringbuilders? I do not have access to the test cases, so I cannot actually verify it myself. Hope I will find the answer here.

Thanks in advance.

EDIT:

I tried to add 10000 x 30000 characters using a loop. I get the following exceptions.

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)

What to do with this "java heap space"?


回答1:


The length is an int so it should hold up to 2GChar (4GB) assuming you have the memory. You are going to use "only" 600MB (300 million @ 2 bytes per character). Just be careful how many copies you end up making... i.e. toString().




回答2:


What you need to worry about is the max heap size. It is not going to make any difference whether you use single or multiple StringBuilder objects.




回答3:


As long as the length of the character sequence contained in the string builder does not exceed the capacity, it is not necessary to allocate a new internal buffer. If the internal buffer overflows, it is automatically made larger. And it gives you the max number of chars this StringBuilder instance memory can hold at this time.



来源:https://stackoverflow.com/questions/12758106/maximum-number-of-characters-stringbuilder-can-accommodate

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!