即使我将内存大小设置为 32 GB 并且仅将 500 MB 的文件读入构建器,我也会从 java.lang.StringBuilder.append 收到 OutOfMemoryError。
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]
最佳答案
发生这种情况是因为 StringBuilder 想要分配的字节数组需要比 JVM 允许的更大的数组大小(超过 2147483647 个又名 Integer.MAX_VALUE 元素)。
关于java - StringBuilder.append() 中的 OutOfMemoryError 即使有足够的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56384118/