2017-02-09 4 views
0

がでダウンロード中にメモリが不足しています。ByteArrayDataSourceを使用してマルチパートファイルをダウンロード中にメモリエラーが発生しました

私は拳行の問題を取得してファイルをダウンロードするのHttpURLConnectionを使用しています:

ByteArrayDataSource ds = new ByteArrayDataSource(con.getInputStream(), 
       "multipart/mixed");   //Line 1 
MimeMultipart multipart = new MimeMultipart(ds);   //Line 2 
     javax.mail.BodyPart jsonPart = multipart.getBodyPart(1); //Line 3 
     javax.mail.BodyPart videoPart = multipart.getBodyPart(2); //Line 4 

マルチパート応答は、1つの単純なテキストファイルであり、もう1つは、ビデオファイルである、2つの異なるファイルが含まれています。

マルチパート全体の応答サイズは1 GBを超えています。

+0

どのラインがエラーを投げていますか?ストリームを一度に読み込むのではなく、徐々に処理する必要があるでしょう。 – shmosel

+0

メモリ割り当て 'Xmx'の値を指定していますか?あなたは参照することができます:http://stackoverflow.com/questions/14763079/what-are-the-xms-and-xmx-parameters-when-starting-jvms –

+0

@shmosel ByteArrayDataSource ds = new ByteArrayDataSource(con.getInputStream() 、 "multipart/mixed");この行はエラーです。はい、私は知っていますが、ストリームを徐々に読み込むための適切な解決策が得られていません。 – pash

答えて

0

入力ストリーム全体が小さいことを確認しない限り、入力ストリーム全体をバイト配列にロードしないでください。ローカルファイルシステムに一時的にファイルを保存することで、これを行うことができます。大きなファイルの場合は、別の解決策を見つける必要があります。それを許可しないか、ストリーミングをサポートする宛先にストリームします。 JMSキュー。

関連する問題