第一次下载PDF,从下次开始就抛出java.lang.OutOfMemoryError: Java heap space 。当前最大堆大小为 536 MB
httpResp.setHeader("Expires", "0");
httpResp.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
httpResp.setHeader("Pragma", "public");
httpResp.setHeader("Content-Disposition", "inline; filename="+"BulkIdCard"+".pdf");
httpResp.setContentType("application/pdf");
httpResp.getOutputStream().write(byte[]);//pdf in byte array
httpResp.getOutputStream().flush();
httpResp.getOutputStream().close();
最佳答案
幸运的是,PDF 是使用 ByteArrayOutputStream
以字节数组形式生成的。重写为使用 OutputStream
参数化的方法,并传递 httpResp.getOutputStream()
应该可以。
然而,现在是检查生成的 PDF 是否有冗余数据的好时机。追加不会删除过时的数据,重复的图像应该只存储一次等等。与 PDF 优化器或干净的写入进行比较可能会给出指导。更少的数据、更好的响应时间、服务器负载。
关于java.lang.OutOfMemory错误: Java heap space - while writing pdf to outputstream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40839305/