Jersey 1.17下载大文件

时间:2016-06-28 11:28:43

标签: java rest jersey

我想从REST服务下载大文件,我有代码:

@GET
@Path("/laboDownloadAnyType")
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response laboDownload() throws FileNotFoundException
{
    final String fileName = "SampleVideo_1280x720_50mb.mp4";
    final InputStream fileInStream = new FileInputStream(fileName);
    return Response.ok(fileInStream, MediaType.APPLICATION_OCTET_STREAM_TYPE)
      .header("Content-Disposition", "attachment; filename=\"" + fileName + "\"" ) //optional
      .build();
}

当我使用小文件时它工作得非常好,但现在我想下载大文件(从500MB到3GB)我正在

java.lang.OutOfMemoryError: Java heap space

如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

使用MappedByteBuffer而不是InputStream,你可以在这里检查MappedByteBuffer的实现Check this link

希望它能为您提供所需的功能。

答案 1 :(得分:0)

问题解决了: 我不得不关闭Comunication Logging