gpt4 book ai didi

java - JasperFillManager.fillReportToFile 内存不足问题

转载 作者:太空宇宙 更新时间:2023-11-04 07:49:34 24 4
gpt4 key购买 nike

我在生成多个小型 PDF 报告(例如 50000 个报告,每个报告 2-3 页,文件大小为 50 到 60 KB)时遇到内存不足问题。生成 3000 份报告后出现内存不足错误。

执行以下行后,我发现内存没有被清理。

JasperFillManager.fillReportToFile(compiledPath,
file.getPath(), null, dataSource);

我已使用 JRSwapFileVirtualizer 尝试了以下替代代码,但它对解决问题没有帮助。

dataSource = new JRBeanArrayDataSource(myBean);
swapFile = new JRSwapFile(outputFileLocation, 1024, 1024);
virtualizer = new JRSwapFileVirtualizer(3,swapFile, true);

parameterMap = new HashMap();
parameterMap.put(JRParameter.REPORT_VIRTUALIZER, virtualizer);


JasperFillManager.fillReportToFile(compiledPath,
file.getPath(), parameterMap, dataSource);

dataSource = null;
virtualizer.cleanup();

jasperPrint = (JasperPrint) JRLoader.loadObject(file);

compiledPath = null;
file = null;


pdfExporter = new JRPdfExporter();
pdfExporter.setParameter(JRExporterParameter.JASPER_PRINT,
jasperPrint);
pdfExporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME,
finalOutputfile.toString());

pdfExporter.exportReport();

任何有关如何在生成每个报告后清理内存的建议都会很有帮助。

最佳答案

不确定 pojo 还是传统的 JSP Web 应用程序,但对于我的 Spring 应用程序,它曾经有相同的内存不足问题。我退出跟踪日志记录并找到很多有关渲染模板的信息。这让我想起jrxml是一个预编译模板,而不是.jasper。所以我更换了所有模板,然后内存不足问题就再也不会发生了。请将此视为对@Joop Eggen 建议的补充。

关于java - JasperFillManager.fillReportToFile 内存不足问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14714924/

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