Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Maximum number of characters stringbuilder can accommodate

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"?

like image 383
Victor Mukherjee Avatar asked Oct 06 '12 08:10

Victor Mukherjee


2 Answers

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().

like image 157
Jim Garrison Avatar answered Sep 23 '22 14:09

Jim Garrison


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.

like image 39
Sameer Avatar answered Sep 26 '22 14:09

Sameer