簡體   English   中英

春季文件上傳,java堆大小錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM