大文件下载---之内存溢出问题解决
来源:互联网 发布:mac os支持office 2016 编辑:程序博客网 时间:2024/05/21 12:40
我是在log日志下载的时候出现的错误,查了之后发现是文件过大造成内存溢出,因而下载出错。
报错:java.lang.OutOfMemoryError: Java heap space
正确代码:
@RequestMapping("/download") public void download (HttpServletResponse response,@Param("url")String url) throws IOException{ String path = request.getSession().getServletContext().getRealPath("vod"+File.separator+"log"+File.separator+url); try { File file = new File(path); if (file.exists()) { String filename = file.getName(); InputStream fis = new BufferedInputStream(new FileInputStream( file)); //用BufferedInputStream读取文件 response.reset(); response.setContentType("application/x-download"); response.addHeader("Content-Disposition","attachment;filename="+ new String(filename.getBytes(),"iso-8859-1")); response.addHeader("Content-Length", "" + file.length()); OutputStream toClient = new BufferedOutputStream(response.getOutputStream()); response.setContentType("application/octet-stream"); byte[] buffer = new byte[1024]; int i = -1; while ((i = fis.read(buffer)) != -1) { //不能一次性读完,大文件会内存溢出(不能直接fis.read(buffer);) toClient.write(buffer, 0, i); } fis.close(); toClient.flush(); toClient.close(); } else { PrintWriter out = response.getWriter(); out.print("<script>"); out.print("alert(\"not find the file\")"); out.print("</script>"); } } catch (IOException ex) { PrintWriter out = response.getWriter(); out.print("<script>"); out.print("alert(\"not find the file\")"); out.print("</script>"); } }
阅读全文
0 0
- 大文件下载---之内存溢出问题解决
- java 大数据处理之内存溢出解决办法
- java 大数据处理之内存溢出解决办法
- 病中吟之内存溢出
- java 大数据处理之内存溢出解决办法(一)
- 知识积累之内存溢出
- Android基础之内存溢出
- tomcat之内存溢出两张情况
- ByteArrayInputStream之内存溢出(IoUtils)
- Android面试之内存溢出解决
- 面试之内存溢出的解决方案
- java异常之内存溢出异常
- Tomcat之内存溢出设置JAVA_OPTS
- C++项目总结二之内存溢出
- Windows之内存映射文件
- Windows之内存映射文件
- web工程下 tomcat 上传大文件 内存溢出问题解决
- c++之内存分配大解析
- Android6.0权限申请
- Sersync+Rsync实现触发式文件同步
- Tomcat 源码阅读(三)Catalina.start
- webservice客户端不生成JAXBElement类型
- Internet thin-stream 交互式应用 TCP延迟
- 大文件下载---之内存溢出问题解决
- [js高手之路]Node.js实现简易的爬虫-抓取博客所有文章列表信息
- MVVM实现原理(数据变更的实现)
- java注解
- Java处理线程同步/线程安全的方式概述
- Java基本数据类型总结
- Spark RDD 持久化
- Item组件
- jdk源码研究1-HashMap