java.lang.OutOfMemory错误: Java heap space - while writing pdf to outputstream

标签 java outputstream

第一次下载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/

相关文章:

C# sealed 与 Java final

java - 写入 jar 文件中的文本文件

java - 真正显示 java outputstream 进度和超时

java - 从 JDialog 返回时出现意外结果

java - HashMap的性能和怪异

java - 无法使用 Spring Boot 和 JPA 在 MySQL 8 DB 中插入数据

java - Xbooting Java 类

c++ - 如何重定向用 SWIG 包装并暴露给 Python 的 C++ 例程的标准流?

java - Java中OutputStream中的String中的引号问题

java - 匹配输出流上大于最大字符串限制的正则表达式模式的有效方法