Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
spring文件上载,java堆大小错误_Java_Spring_Spring Mvc_Heap_Apache Commons Fileupload - Fatal编程技术网

spring文件上载,java堆大小错误

spring文件上载,java堆大小错误,java,spring,spring-mvc,heap,apache-commons-fileupload,Java,Spring,Spring Mvc,Heap,Apache Commons Fileupload,我在上传文件时出现了一些奇怪的错误。 文件大小约为300mb。 当我试图上传它时,我发现“内存不足错误:java堆空间”。 我试图将堆大小增加到3gb,但仍然不够。 配置为: Spring java配置,Spring jdbctemplate,mysql。 当我尝试使用其他项目(SpringXMLConfig、upload with executefunction、oracle)上载同一个文件时,需要从堆中拿出900mb并成功上载。 有没有什么想法或者关于如何发现问题的任何提示 @Reque

我在上传文件时出现了一些奇怪的错误。
文件大小约为300mb。
当我试图上传它时,我发现“内存不足错误:java堆空间”。 我试图将堆大小增加到3gb,但仍然不够。
配置为:
Spring java配置,Spring jdbctemplate,mysql。
当我尝试使用其他项目(SpringXMLConfig、upload with 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});
        } 
}
更新:添加文件内容。现在整个过程大约需要500mb(我想上传文件到控制器中)


更新2:将数据库更改为oracle-它可以工作。所以问题出在mysql属性中。

使用MultipartFile.getInputStream()和MultipartFile.getSize()以及匹配的构造函数

MySQL不适用于大型blob=\