OutOfMemoryError в StringBuilder.append () даже с более чем достаточным объемом памяти - PullRequest
1 голос
/ 30 мая 2019

Я получаю OutOfMemoryError от java.lang.StringBuilder.append, даже когда я устанавливаю размер памяти 32 ГБ и считываю только файл 500 МБ в сборщик.

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]

1 Ответ

5 голосов
/ 30 мая 2019

Это происходит потому, что байтовому массиву, который StringBuilder хочет выделить, потребуется больший размер массива, чем разрешено JVM (более 2147483647, иначе говоря, элементов Integer.MAX_VALUE).

...