我在Java(xmx = 4096m)中使用jasper报告。我已经使用JRGzipVirtualizer
从PGSQL数据库中创建了一个包含200,000行的庞大报告。虚拟机在内存中大约需要700MB的空间。通过JasperPrint
将ObjectOutputStream
对象存储在文件中。它创建一个2.9GB的文件。
当我尝试通过ObjectInputStream
读取它时,会抛出一个OutOfMemoryError
。
我的猜测是gzipvirtualizer正在压缩数据,使其可以驻留在内存中。但是,当存储在文件中时,它不会被压缩。因此,在读取时会尝试读取巨大的未压缩数据。
我可以以某种方式使它写压缩的东西,或者以其他方式解决它。
最佳答案
可以通过调用JRVirtualizationHelper。setThreadVirtualizer()或使用JRLoader。loadJasperPrint()在JasperPrint对象上使用虚拟器反序列化
参考:Deserializing JasperPrint objects from .jrprint files should allow use of JRVirtualizer functionality
关于java - 从文件导入JasperPrint时出现OutOfMemoryError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24492428/