java.lang.OutOfMemoryError thrown from StringBuilder/StringBuffer.
Issue
java.lang.OutOfMemoryError is sometimes thrown from a StringBuilder/StringBuffer object with error messages like below even though Java Heap have not yet exhausted.
(*e1) Exception example 1 in OpenJDK 8, 11
Exception in thread "main" java.lang.OutOfMemoryError
at java.base/java.lang.AbstractStringBuilder.hugeCapacity(AbstractStringBuilder.java:214)
at java.base/java.lang.AbstractStringBuilder.newCapacity(AbstractStringBuilder.java:206)
at java.base/java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:173)
at java.base/java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:538)
at java.base/java.lang.StringBuilder.append(StringBuilder.java:178)
at StringBuilderTest.main(StringBuilderTest.java:16)
(*e2) Exception example 2 in OpenJDK 17, 21
Exception in thread "main" java.lang.OutOfMemoryError: Required array length 2147483639 + 192 is too large
at java.base/jdk.internal.util.ArraysSupport.hugeLength(ArraysSupport.java:752)
at java.base/jdk.internal.util.ArraysSupport.newLength(ArraysSupport.java:745)
at java.base/java.lang.AbstractStringBuilder.newCapacity(AbstractStringBuilder.java:263)
at java.base/java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:243)
at java.base/java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:587)
at java.base/java.lang.StringBuilder.append(StringBuilder.java:179)
at StringBuilderTest.main(StringBuilderTest.java:16)
(*e3) Exception example 3 in OpenJDK 8, 11, 17, 21
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.base/java.util.Arrays.copyOf(Arrays.java:3541)
at java.base/java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:242)
at java.base/java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:587)
at java.base/java.lang.StringBuilder.append(StringBuilder.java:179)
at StringBuilderTest.main(StringBuilderTest.java:16)
Environment
- OpenJDK
- 8
- 11
- 17
- 21
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.