gpt4 book ai didi

java - 下载servlet抛出java堆空间异常

转载 作者:行者123 更新时间:2023-12-02 00:26:53 25 4
gpt4 key购买 nike

我有一个搜索功能,我可以通过搜索按钮将实体的所有记录返回给用户,现在无论记录有多少(现在,它可以搜索 50,000 条记录)。现在我正在尝试将所有这些记录下载到 csv 中。如果记录较少,那么它工作正常,但是当它超过 30,000 时,它会抛出

编辑:-

解决方案:-使用这些代码行

            InputStream in = new ByteArrayInputStream(buffer.toString().getBytes("UTF-8"));
ServletOutputStream out = response.getOutputStream();

byte[] outputByte = new byte[4096];

while(in.read(outputByte, 0, 4096) != -1)
{
out.write(outputByte, 0, 4096);
}
in.close();
out.flush();
out.close();*/

最佳答案

不要将所有内容写入一个巨大的内存缓冲区,然后在内存中制作一个巨大的字符串副本,而是从 HttpServletResponse 获取 Writer 并将 CSV 直接写入您创建客户端时。这样您就可以将数据通过网络刷新到客户端,而不必在发送整个数据之前在 RAM 中保留两份完整的副本。

当然,也可以增大堆!

关于java - 下载servlet抛出java堆空间异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9817457/

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