gpt4 book ai didi

Java 堆空间(带有大文件的 CMS)

转载 作者:行者123 更新时间:2023-11-28 21:54:37 25 4
gpt4 key购买 nike

编辑:

得到了要生存的目录。现在还有另一个问题:

存储中的文件以其 DB id 作为前缀存储到他们的文件名。我当然不希望用户看到这些。

有没有办法结合 response.redirect 和 header 设置für 文件名和大小?

最好的,

     A

你好,

新方法:

是否可以在tomcat中创建类似IIS的虚拟目录避免流式传输并仅使用 header 重定向?我玩过上下文,但无法让它继续......

有什么想法吗?

    thx

一个

你好 %,

我正面临 Java 堆空间的有线问题,该空间很接近把我带到绳索上。

简短的版本是:

我写了一个 ContentManagementSystem 需要处理大文件(> 600mb)也是如此。 Tomcat 堆设置:

-Xmx700m-Xms400m

问题是,上传大文件是可行的,尽管它是慢的。下载文件导致 java 堆空间异常。

尝试下载一个 370mb 的文件会使 tomcat 跳到 500mb 堆(这应该没问题)并以 Java 堆空间异常结束。

我不明白,为什么上传有效而下载无效?这是我的下载代码:

byte[] byt = new byte[1024*1024*2];

response.setHeader("Content-Disposition", "attachment;filename=\"" + fileName + "\"");

FileInputStream fis = null;
OutputStream os = null;

fis = new FileInputStream(new File(filePath));
os = response.getOutputStream();

BufferedInputStream buffRead = new BufferedInputStream(fis);

while((read = buffRead.read(byt))>0)
{
os.write(byt,0,read);
os.flush();
}

buffRead.close();
os.close();

如果我做对了,缓冲阅读器应该会处理任何问题内存问题,对吧?

任何帮助将不胜感激,因为我已经没有想法了

最好的问候,

W

最佳答案

If I'm getting it right the buffered reader should take care of any memory issue, right?

不,这与内存问题无关,它实际上是不必要的,因为您已经在使用缓冲区来读取文件。你的问题是写作,而不是阅读。

我看不出您的代码有任何问题。看起来 Tomcat 正在缓冲整个响应而不是流式传输。我不确定是什么原因造成的。

response.getBufferSize() 返回什么?您应该尝试将 response.setContentLength() 设置为文件的大小;我依稀记得 Web 容器在某些情况下会缓冲整个响应以确定内容长度,所以也许这就是正在发生的事情。无论如何都这样做是一种很好的做法,因为它使客户端能够显示下载大小并为下载提供预计到达时间。

关于Java 堆空间(带有大文件的 CMS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1000219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com