1

サイズが 32 MB のファイルがあり、DocuShare サーバーから DocuShare temp フォルダーにダウンロードしました。ファイルの内容を読み取ってファイルを作成しようとしています。base64 コンテンツを URL エンコードするとエラーが発生します。単純な Java アプリケーションで同じコードを実行しても、例外は発生しません。しかし、DocuShare サービスで同じコードを使用してドキュメント コンテンツを取得すると、例外が発生します。HTTP ステータス 500 - org.glassfish.jersey.server.ContainerException: java.lang.OutOfMemoryError: Java ヒープ スペース

org.glassfish.jersey.server.ContainerException: java.lang.OutOfMemoryError: Java ヒープ スペース

File file = new File(filePath);
FileInputStream fileInputStreamReader = new FileInputStream(file);
byte[] bytes = new byte[(int)file.length()];
fileInputStreamReader.read(bytes);
String encodedBase64 = String encodedBase64 = java.util.Base64.getEncoder().encodeToString(bytes);
String urlEncoded = URLEncoder.encode(encodedBase64);

このエラーを修正するにはどうすればよいですか? Tomcat のヒープ サイズを増やす必要はありますか?

4

3 に答える 3

0

大きなファイルがある場合、ファイルのサイズによっては常に OOM エラーが発生します。目標が Apache Commons Base64 Streams を使用した base64 エンコーディングである場合。

https://commons.apache.org/proper/commons-codec/apidocs/org/apache/commons/codec/binary/Base64InputStream.html

于 2019-03-25T05:44:37.577 に答える