springboot项目批量导入数据报异常:java.lang.OutOfMemoryError: GC overhead limit exceeded
excel 文件大小为2M。数量117879条数据。如下图
Controller接口:
ResponseResult<Void> batchImportStaffInfo(@RequestParam("companyId") String companyId, @RequestPart(name =
"file") MultipartFile file) {
long size = 1024 * 1024 * 2;
if (file.getSize() > size) {
return GlobalResultStatus.FAIL.toResult("文件大小限制2M以内").responseEmptyBody();
}
return staffApi.batchImportStaffInfo(companyId, file);
}
ServiceImpl:
public ResponseResult<Void> batchImportStaffInfo(String companyId, MultipartFile file) {
// 文件转vo对象集合
List<StaffImportVo> monitorPersonImportVos = EasyPoiUtil.importExcel(file, 0, 1,
StaffImportVo.class);
//后续业务逻辑处理
}
EasyPoiUtil
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import java.util.NoSuchElementException;
public class EasyPoiUtil {
/**
* 功能描述:根据接收的Excel文件来导入Excel,并封装成实体类
*
* @param file 上传的文件
* @param titleRows 表标题的行数
* @param headerRows 表头行数
* @param pojoClass Excel实体类
* @return
*/
public static <T> List<T> importExcel(MultipartFile file, Integer titleRows, Integer headerRows, Class<T> pojoClass) {
if (file == null) {
return null;
}
ImportParams params = new ImportParams();
params.setTitleRows(titleRows);
params.setHeadRows(headerRows);
List<T> list = null;
try {
//调用easypoi的方法
list = ExcelImportUtil.importExcel(file.getInputStream(), pojoClass, params);
} catch (NoSuchElementException e) {
throw new RuntimeException("excel文件不能为空");
} catch (Exception e) {
throw new RuntimeException(e.getMessage());
}
return list;
}
}
easypoi pom.xml
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-base</artifactId>
<version>3.0.3</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-web</artifactId>
<version>3.0.3</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-annotation</artifactId>
<version>3.0.3</version>
</dependency>
解决方案:增加heap堆内存。
感谢:园长大人提供解决方案!! 他的主页
说明:园长大人是我目前所在公司技术架构师,有路过的java新手,可以关注他学习交流技术。