2016-07-20 20 views
3

Ich arbeite in einer Webanwendung, es verwendet JasperReports 5 (jasperreports-5.0.1.jar), aber Speicher verliert bis java.lang.OutOfMemoryError, diese App generiert dynamische Berichte zwischen 10 bis 100 Seiten.JasperReports Speicherleck

I MAT bin mit, um zu wissen, was los ist, wie Sie in den folgenden Bildern sehen können, Jasperreports ist Haltespeicher:

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

Histogramm von Paket gruppiert: Histogram of grouped by package

Die Namen Plantilla und SubReport im Histogramm sind in Verbindung mit unseren Berichten, die mit JasperReports generiert wurden.

Diese Webanwendung läuft auf der folgenden Umgebung:

-WebLogic 11g

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

-Xms2048m -Xmx2048m

-Oracle Linux

Wenn Sie etwas ähnliches konfrontiert haben, lassen Sie mich Ihre Erfahrung wissen.

+0

1) Vielleicht gibt Ihr Code keine Ressourcen frei. Was ist mit der Ressourcenverwaltung in Ihrem Code? 2) Haben Sie versucht, JR 6.3 Version (oder 6.2) zu verwenden? 3) Haben Sie versucht, Oracle jre/jdk und jdk8 zu verwenden? –

+1

Versuchen Sie, die Eigenschaft net.sf.jasperreports.evaluator.class.reference.fix.enabled in Ihrer jasperreports.properties auf false zu setzen. – dada67

+0

Was meinst du mit Ressourcenmanagement ?, habe ich nicht mit einer anderen JR-Version versucht, mit Orakel jdk ist keine Option, denn was wir in der Produktion haben. – dogmeat

Antwort

1

Verwenden Sie die .jasper-Datei, um den Bericht anstelle von .jrxml zu füllen, da.jasper im kompilierten Format und. jrxml wird nicht kompiliert, wo immer Sie versuchen, den Bericht zu füllen, indem Sie .jrxml zuerst kompilieren und dann die Restverarbeitung durchführen, was zu mehr Speicherverbrauch führt

+0

Ja, in der Tat habe ich nur .jasper im Dateisystem, danke! – dogmeat