MangoCool

MultipartFile file.getBytes() Java heap space

2023-10-09 14:57:46   作者:anobody   来源:MangoCool

记一次上传文件出现的问题:MultipartFile file.getBytes() Java heap space

问题所在:

byte[] bytes = uploadFile.getBytes();
FileUtils.writeByteArrayToFile(tmpFile, bytes, true);

在服务端接收文件时,使用一次性接收全部数据的方法uploadFile.getBytes(),然后一次性写入文件,没想到测试服务器设置的jvm堆内存太小,直接爆掉了

解决问题:

InputStream is = uploadFile.getInputStream();
int len = 0;
byte[] buffer = new byte[1024];
while ((len = is.read(buffer)) != -1) {
	FileUtils.writeByteArrayToFile(tmpFile, buffer, true);
}

在服务端打开一个输入流,开辟一个jvm可以承受的缓冲区buffer,分批读取上传的数据,然后逐步写入文件

标签: 上传文件 MultipartFile Java heap 溢出

分享:

上一篇下载大文件出现直接内存溢出:java.lang.OutOfMemoryError: Direct buffer memory

下一篇-bash: ./scripts/tigase.sh: /bin/bash^M: bad interpreter: No such file or directory

关于我

崇尚极简,热爱技术,喜欢唱歌,热衷旅行,爱好电子产品的一介码农。

座右铭

当你的才华还撑不起你的野心的时候,你就应该静下心来学习,永不止步!

人生之旅历途甚长,所争决不在一年半月,万不可因此着急失望,招精神之萎葸。

Copyright 2015- 芒果酷(mangocool.com) All rights reserved. 湘ICP备14019394号

免责声明:本网站部分文章转载其他媒体,意在为公众提供免费服务。如有信息侵犯了您的权益,可与本网站联系,本网站将尽快予以撤除。