[英]spring file upload, java heap size error
文件上传期间出现一些奇怪的错误。
文件大小约为300mb。
当我尝试上传时,出现“内存不足错误:java堆空间”。 我试图将堆大小增加到3gb,但这还不够。
配置为:
Spring Java配置,Spring jdbctemplate,MySQL
当我尝试使用其他项目(spring xml配置,使用executefunction,oracle上传)上载相同文件时,从堆中取出900mb并成功上传。
有什么想法怎么回事或有关如何发现问题的任何提示?
@RequestMapping(value = {"/add_file"}, method = {RequestMethod.POST}/*,
params = {"file","path","parent_id"}*/)
public String addFile(
@RequestParam("file") MultipartFile file,
@RequestParam("parent_id") int parent_id,
@RequestParam("path") String path,
@RequestParam("id") int id
) {
try {
if (id == -1) fileDAO.addFile(file.getOriginalFilename(), file.getBytes(), parent_id);
else fileDAO.updateFile(id, file.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
return "redirect:" + path;
}
/* dao function */
@Override
public void addFile(String name, byte[] blob, int folder_id) {
if (folder_id == 0) {
jdbcTemplate.update("insert into file(name, content) VALUES(?,?)",
new Object[]{name, new SqlLobValue(blob)},
new int[]{Types.VARCHAR, Types.BLOB});
}
}
更新 :评论addFile内容。 现在整个过程大约需要500mb(我想是将文件上传到控制器)
update2:将db更改为oracle-可以工作。 所以问题出在mysql属性..?
使用MultipartFile.getInputStream()和MultipartFile.getSize()以及匹配的SqlLobValue构造函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.