跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • OutOfMemoryError: Java heap space内存溢出加内存无用,何解?
未分類
5 11 月 2021

OutOfMemoryError: Java heap space内存溢出加内存无用,何解?

朕的大清完了? 大佬有话说 :

OutOfMemoryError: Java heap space内存溢出加内存无用,何解?

文件是2907M 将近3G的,

上传本地没问题,就是传到B2就报这错了

代码里面是传到本地后,再传到b2

意思就是在本地中转了一下 🙁

idea 里面也设置了 启动参数 -Xmx2907m -Xms2907m -XX:NewRatio=4

求大佬指点

    @Override
    public CommonRes index(MultipartFile[] zipFile){
      String timepath="dw";
      List<String> list = new   ArrayList<String>();
      for (int i = 0; i < zipFile.length; i++) {

            try {
                //保存文件
            File ret= saveFile(zipFile, timepath);
                //拿post过来的文件md5值
                FileInputStream fis = new FileInputStream(ret);
                String md5var = org.apache.commons.codec.digest.DigestUtils.md5Hex(fis);
                fis.close();//关闭流
                String pathvsname=timepath+"/"+ret.getName();
                  //传到b2
                  this.uploadFile(ret,timepath);
                  System.out.println("传到B2,返回内存信息:"+pathvsname);
                  //返回路径
                  list.add("https://xxx.com/"+ret.getName());

                //uploadFile(dest);

            } catch (IOException e) {
                e.getMessage();
            }
      }

上药三品 大佬有话说 :

你堆内存和文件一样大,合着其他东西不需要内存是吧

Eric.c 大佬有话说 :

java已经还给老师

darius 大佬有话说 :

报错的堆栈信息发下

CMBCHINA 大佬有话说 :

java支持分块上传大兄弟:L

朕的大清完了? 大佬有话说 :

CMBCHINA 大佬有话说 : 2021-11-4 10:32
java支持分块上传大兄弟

怎么弄,b2好像不能分块上传的吧,本地上传没问题

朕的大清完了? 大佬有话说 :

本帖最后由 朕的大清完了? 于 2021-11-4 10:52 编辑

darius 大佬有话说 : 2021-11-4 10:28
报错的堆栈信息发下

我把 this.uploadFile(ret,timepath); 注释就没问题

打开this.uploadFile(ret,timepath);
上传小问题 300M 的也没问题,就3G的报错了,

也没什么信息 就一条WARN

CMBCHINA 大佬有话说 :

朕的大清完了? 大佬有话说 : 2021-11-4 10:37
怎么弄,b2好像不能分块上传的吧,本地上传没问题

像大文件都是分片传送的,并不是说送到服务端是一个一个的,
而是在java将文件切块,然后wirte一块以后 flush一次,你可以查查flush作用(
flush() 则要求立即将缓冲区的数据输出到接收方)然后再发起另一块,最后全部结束close()

朕的大清完了? 大佬有话说 :

CMBCHINA 大佬有话说 : 2021-11-4 10:43
像大文件都是分片传送的,并不是说送到服务端是一个一个的,
而是在java将文件切块,然后wirte一块以后 f …

好的,感谢我看看分块吧

但是 这代码 传本地却 没问题,

darius 大佬有话说 :

你用bufferedinputstream把fileinputstream包装下,整个缓冲区

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具