在将 Base64 编码的字符串解码为字节数组时(必须这样做,因为我有一个可以作用于字节数组进行解密的密钥),我得到了 outOfMemory。处理这个问题的有效方法是什么?我是否应该将我的输入编码字符串分块为大小的分区,然后对其进行解码或任何其他有效的建议,请提出建议。
导致问题的代码。
byte[] encrypted = Base64.decodeBase64(strEncryptedEncodedData);
堆栈跟踪
DefaultQuartzScheduler_Worker-3
at java.lang.OutOfMemoryError.<init>()V (OutOfMemoryError.java:48)
at java.lang.StringCoding$StringEncoder.encode([CII)[B (StringCoding.java:300)
at java.lang.StringCoding.encode(Ljava/lang/String;[CII)[B (StringCoding.java:344)
at java.lang.String.getBytes(Ljava/lang/String;)[B (String.java:918)
at org.apache.commons.codec.binary.StringUtils.getBytesUnchecked(Ljava/lang/String;Ljava/lang/String;)[B (StringUtils.java:156)
at org.apache.commons.codec.binary.StringUtils.getBytesUtf8(Ljava/lang/String;)[B (StringUtils.java:129)
at org.apache.commons.codec.binary.BaseNCodec.decode(Ljava/lang/String;)[B (BaseNCodec.java:306)
at org.apache.commons.codec.binary.Base64.decodeBase64(Ljava/lang/String;)[B (Base64.java:669)
Eclipse 内存分析器内存使用情况:
Edit1:允许的最大 XMX 为 1 GB。
编辑2:JDK版本“1.8.0_91”