0

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」

4

2 に答える 2