java 文件下载出错 java.lang.OutOfMemoryError: Java heap space? 400 报错
文件比较大 100M,有没有大哥帮忙分析下
public static void download(String path, HttpServletResponse response) throws Exception {
try {
File file = new File(path);
if (file.exists()) {
String filename = file.getName();
response.reset();
response.setHeader("Content-Disposition","attachment;filename=" + new String(filename.getBytes(), "iso-8859-1"));
response.setContentType("application/octet-stream");
response.setHeader("Content-Length", "" + file.length());
InputStream is = new BufferedInputStream(new FileInputStream(file));
OutputStream os = new BufferedOutputStream(response.getOutputStream());
byte[] buffer = new byte[1024 * 10];
int len = -1;
while ((len = is.read(buffer)) != -1) {
os.write(buffer, 0, len);
}
os.flush();
os.close();
is.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
断点续传
######每次从文件里面读取N个字节,返回……一次性读完,太浪费内存
######关键词:copy on write######每5M fllush一次。######问题找到了,有个过滤器会把所有response 的数据转成ByteArrayOutputStream
######因为拦截的处理嘛,涉及IO流感觉都需要单独弄个服务来支撑。。。要不上传或下载的并发大一点,就会内存不够######积累一定量记得flush######有没有屌大的说下现实场景中你们都是如何处理的?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。