Soul柒月 2016-04-23 03:48 采纳率: 20%
浏览 3934
已结题

javaweb上传文件到本机时,文件一直占用在内存中导致OutOfMemoryError,求前辈指点

下面是上传代码和java内存监视图
以上传一个300M文件大小为示例

 @RequestMapping("/uploads")
    public @ResponseBody String upload(MultipartHttpServletRequest request,
            HttpServletResponse response) throws Exception {
        String result = "";
        // 获取上传的所有文件名
        Iterator<String> itr = request.getFileNames();
        MultipartFile mpf = null;
        while (itr.hasNext()) {
            // 取出文件
            mpf = request.getFile(itr.next());
            try {
                File file = new File(UPLOADFILEPATH);
                if (!file.exists()) {
                    file.mkdirs();
                }
                // 输出(保存)文件
                FileOutputStream fos = new FileOutputStream(new File(UPLOADFILEPATH + mpf.getOriginalFilename()));
                //获取文件的输入流并写入文件
                InputStream fis = mpf.getInputStream();
                byte[] buffer = new byte[1024];
                int len = 0;
                while ((len = fis.read(buffer)) != -1) {
                    fos.write(buffer, 0, len);
                    fos.flush();
                }
                //关闭流
                fis.close();
                fos.close();
                mpf = null;
                result = "{\"success\":true}";
            } catch (IOException e) {
                result = "{\"success\":false}";
                e.printStackTrace();
            }

        }
        itr = null;
        System.gc();
        return result;
    }

下面是内存监视图
上传前的JvisualVM内存视图
上传前的JvisualVM内存视图
上传后的JvisualVM内存视图
上传后的JvisualVM内存视图
上传后的jconsole内存视图
上传后的jconsole内存视图
上传后的jconsole--old gen内存视图
上传后的jconsole--old gen内存视图
手动执行JvisualVM-GC清理后的内存视图
手动执行JvisualVM-GC清理后的内存视图

大概情况就是这样子了.文件上传本地后,内存一直被占用无法释放,导致内存溢出.困扰我很久了.希望有前辈能指点一下.谢谢!

  • 写回答

3条回答 默认 最新

  • On_the_orad 2016-04-23 04:04
    关注

    是内存溢出吧 你把虚拟内存值设大一点

    评论

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序