I get an OutOfMemoryError from java.lang.StringBuilder.append even when I set the memory size to 32 GB and reading only a 500 MB file into the builder.
java.lang.OutOfMemoryError: null
at java.base/java.lang.AbstractStringBuilder.hugeCapacity(AbstractStringBuilder.java:214) ~[na:na]
at java.base/java.lang.AbstractStringBuilder.newCapacity(AbstractStringBuilder.java:206) ~[na:na]
at java.base/java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:173) ~[na:na]
at java.base/java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:538) ~[na:na]
at java.base/java.lang.StringBuilder.append(StringBuilder.java:174) ~[na:na]
at com.github.loa.indexer.service.index.base64.Base64Encoder.encode(Base64Encoder.java:31) ~[classes/:na]
This happens because the byte array that the StringBuilder want to allocate would require a larger array size than allowed by the JVM (more than 2147483647 aka Integer.MAX_VALUE elements).