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 です。
Edit2: JDK バージョン「1.8.0_91」