イメージに約500MBの大きなファイルを暗号化する必要があるWebアプリケーションを開発しています。コードは正常に動作しますが、それ以降はサーバーでエラーが発生します。java.lang.OutOfMemoryError:Javaヒープスペース。私はnetbeansとglassfishサーバーを使用しています。ヒープサイズも増やしました。java.lang.OutOfMemoryError:com.sun.crypto.provider.CipherCore.updateのJavaヒープスペース
byte j[] = key.getBytes();
SecretKeySpec kye = new SecretKeySpec(j, "AES");
Cipher enc = Cipher.getInstance("AES");
enc.init(Cipher.ENCRYPT_MODE, kye);
FileOutputStream output = new FileOutputStream("xyz.mkv");
CipherOutputStream cos = new CipherOutputStream(output, enc);
byte[] buf = new byte[104857600];
int read;
while ((read = file.read(buf)) != -1) {
cos.write(buf, 0, read);
}
output.flush();
buf = null;
file.close();
cos.close();
私は何がうまくいかないのか分かりません。お手伝いください。 は、ここでは、スタックトレース..です
Warning: StandardWrapperValve[DocEncrypt]: Servlet.service() for
servlet DocEncrypt threw exception
java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:3236)
at com.sun.crypto.provider.CipherCore.update(CipherCore.java:666)
at com.sun.crypto.provider.AESCipher.engineUpdate(AESCipher.java:371)
at javax.crypto.Cipher.update(Cipher.java:1832)
at javax.crypto.CipherOutputStream.write(CipherOutputStream.java:158)
スタックトレースを表示してください。 –
@StephenCスタックトレースを追加しました。 –