Jasper 报告内存泄漏

dog*_*eat 5 java memory-leaks jasper-reports weblogic11g

我在一个 web 应用程序中工作,它使用 JasperReports 5 (jasperreports-5.0.1.jar) 但在java.lang.OutOfMemoryError之前一直在泄漏内存,这个应用程序生成 10 到 100 页之间的动态报告。

我使用 MAT 是为了了解发生了什么,如下图所示,JasperReports 正在保留内存:

net.sf.jasperreports.engine.export.legacy.BorderOffset$1

按包分组的直方图: 按包分组的直方图

直方图中的PlantillaSubReport名称是与我们使用 JasperReports 生成的报告相关的类。

此 Web 应用程序在以下环境中运行:

-WebLogic 11g

-jrockit-jdk1.6.0_45-R28.2.7-4.1.0

-Xms2048m -Xmx2048m

-Oracle Linux

如果您遇到过类似的事情,请告诉我您的经验。

Pra*_*eep 3

使用 .jasper 文件而不是 .jrxml 来填充报告,因为 .jasper 是编译格式并且 . jrxml 未编译,无论您尝试使用 .jrxml 填充报告,它都会首先编译,然后进行其余处理,这会导致更多内存消耗