优化内存密集型报告的性能
生成报告时,JasperReports 会将报告设计定义 (JRXML) 文件编译到 .jasper 文件中,然后在 .jasper 文件中填充数据。报告填充过程的输出是 JasperPrint 对象形式的文档。此对象的每个实例均可通过 HTML、PDF、CSV 和 XLSX 等格式进行查看、打印或导出。
在创建 JasperPrint 对象时需要使用虚拟机。在处理大型数据集时,对象大小可能会增加,从而增加内存消耗。为避免触发 Windchill 内存不足异常,您需要一个虚拟机。虚拟机会将 JasperPrint 对象拆分成多个文件,并在硬盘上保存并压缩这些文件。
Windchill 支持以下虚拟机:
• JRFileVirtualizer:用于在磁盘上创建临时文件。它会针对每个虚拟化页面均生成一个临时文件。
• JRSwapFileVirtualizer:用于创建单个交换文件,其中会存储所有虚拟化页面。可根据需要扩展文件大小。
• JRGzipVirtualizer:默认虚拟机。不会创建文件来存储虚拟化页面。它会通过使用 Gzip 算法压缩 JasperPrint 对象来优化内存消耗。
可通过以下特性启用虚拟机的设置。这些属性在位于 WT_HOME/codebase 的 jasper-integration.properties.xconf 文件中进行配置。
• com.ptc.wbr.jasper.virtualizer.enabled:为 Windchill 启用 Jasper 虚拟机支持。默认值为 true。
• com.ptc.wbr.jasper.virtualizer:指定要使用的默认虚拟机。默认值为 JRGZIPVIRTUALIZER。
• com.ptc.wbr.jasper.virtualizer.cachedsize:指定要存储在内存中的 JasperPrint 对象的页数。默认值为 300。
• com.ptc.wbr.jasper.jrswapvirtualizer.blocksize:指定交换文件要分配的块数。默认值为 4096。
• com.ptc.wbr.jasper.jrswapvirtualizer.mingrowcount:指定在完整时交换文件可增长的最小块数。默认值为 200。
• com.ptc.wbr.jasper.virtualizer.templocation:指定临时虚拟化文件可保留的临时位置。默认值为 {WT.TEMP}。