Apache fop - OutOfMemoryError

Hein_nieH

Bekanntes Mitglied
Hallo,

ich versuche mit der Bibliothek von Apache fop eine pdf-Datei via xsl-fo aus einer große XML-Datei zu generieren.
Hierbei erhalte ich eine Outofmemoryerror-Exception.

Ursache ist wohl das die Größe des Java Heap wohl zu gering ist.
Meine Frage: Gibt es eine Möglichkeit softwaremäßig den Java Heap zu vergrößern?

Meine xml-Datei ist etwa 1 MB groß.

Über eine fachkundige Antwort würde ich mich sehr freuen.

Gruss Hein_nieH
 

kneitzel

Top Contributor
Du kannst beim Start dem java Optionen mitgeben. -Xmx<Größe> also z.B. -Xmx1024m um die Größe auf 1024 MB zu setzen.

Wichtig ist, dass diese Einstellung vor der Nennung des Jar Files oder der Main Klasse kommen muss, damit es nicht als Parameter der Applikation verstanden wird.
 

Oneixee5

Top Contributor
Eine XML-Datei mit einer Größe von 1 MB ist nichts wirklich großes. Zusätzlich zur Einstellung der Java-Heap-Größe kann man noch folgendes tun um Speichernutzung und Performanz zu verbessern.
  • Um den Speicherverbrauch zu verringern, sollten wann immer möglich, die einzelnen beteiligten Komponenten (Parser, XSL-Transformer, SQL-Datenquelle usw.) über SAX gekoppelt werden.
  • Je nach Ziel-OutputStream (z.B. bei einem FileOutputStream, nicht bei ByteArrayOutputStream) kann es die Leistung erheblich verbessern, wenn der Stream gepuffert wird: out = new java.io.BufferedOutputStream(out);
  • Wenn dasselbe Stylesheet mehrfach verwendet werden soll, kann ein JAXP Templates-Objekt eingerichtet werden und es ist dann bei jeder XSL-Transformation wiederverwendbar.
  • Verwendung eines XSLT-Compiler wie XSLTC, der in Xalan-J enthalten ist.
  • Vererbung von Eigenschaften konsequent zu nutzen.
 

Hein_nieH

Bekanntes Mitglied
Hallo,

danke für die Antworten.
In meinem Fall habe ich eine ausführbare jar-Datei.
Gibt es in diesem Fall auch eine Möglichkeit die xmx-Einstellungen für Java vornehmen?

@Oneixee5: Die Hinweise habe ich schon weitestgehend befolgt.

Gruss Hein_nieH
 

Hein_nieH

Bekanntes Mitglied
Hallo

der Hinweis war schon mal nicht schlecht.
Ich habe das Problem gelöst, in dem ich in den Umgebungsvariablen
die Variable _JAVA_OPTIONS mit dem Wert -Xmx1024M gesetzt habe.

Jetzt läuft die ausführbare jar so wie es angedacht war, d.h "grosse" xml werden via xslt in pdf gewandelt ohne
das eine OutOfMemoryError Exception geworfen wird.

Gruss Hein_nieH
 

Oneixee5

Top Contributor
Es kommt etwas darauf an wie man _JAVA_OPTIONS verwendet. Ich halte nicht viel davon die maximale Heap-Größe per _JAVA_OPTIONS Umgebungsvariablen zu setzen. Jetzt verwenden alle Java Programme die Größe von 1GB, ob sie das benötigen oder nicht. Selbst wenn man explizit eine andere Heap-Größe auf der Kommandozeile angibt. Es könnte ja sein, dass eine andere Anwendung z.B.: 2GB verwenden muss...
 

Oneixee5

Top Contributor
Es kommt etwas darauf an wie man _JAVA_OPTIONS verwendet. Ich halte nicht viel davon die maximale Heap-Größe per _JAVA_OPTIONS Umgebungsvariablen zu setzen. Jetzt verwenden alle Java Programme die Größe von 1GB, ob sie das benötigen oder nicht. Selbst wenn man explizit eine andere Heap-Größe auf der Kommandozeile angibt. Es könnte ja sein, dass eine andere Anwendung z.B.: 2GB verwenden muss...
Bash:
$ java -cp . test/Main
current heap size: 242,0 MiB
    max heap size: 3,8 GiB
   free heap size: 239,5 MiB

$ java -Xmx256m -cp . test/Main
current heap size: 242,0 MiB
    max heap size: 256,0 MiB
   free heap size: 239,5 MiB

$ export _JAVA_OPTIONS=-Xmx1g

$ java -Xmx256m -cp . test/Main
Picked up _JAVA_OPTIONS: -Xmx1g
current heap size: 242,0 MiB
    max heap size: 1,0 GiB
   free heap size: 239,5 MiB

$ java -Xmx2g -cp . test/Main
Picked up _JAVA_OPTIONS: -Xmx1g
current heap size: 242,0 MiB
    max heap size: 1,0 GiB
   free heap size: 239,5 MiB

Java:
public final class Main {

    public static void main(final String[] args) {

        // Get current size of heap in bytes
        final long heapSize = Runtime.getRuntime().totalMemory();
        System.out.println("current heap size: " + humanReadableByteCount(heapSize));

        // Get maximum size of heap in bytes. The heap cannot grow beyond this size.
        // Any attempt will result in an OutOfMemoryException.
        final long heapMaxSize = Runtime.getRuntime().maxMemory();
        System.out.println("    max heap size: " + humanReadableByteCount(heapMaxSize));

        // Get amount of free memory within the heap in bytes. This size will increase
        // after garbage collection and decrease as new objects are created.
        final long heapFreeSize = Runtime.getRuntime().freeMemory();
        System.out.println("   free heap size: " + humanReadableByteCount(heapFreeSize));

    }

    public static String humanReadableByteCount(final long bytes) {
        final long absB = bytes == Long.MIN_VALUE ? Long.MAX_VALUE : Math.abs(bytes);
        if (absB < 1024) {
            return bytes + " B";
        }
        long value = absB;
        final CharacterIterator ci = new StringCharacterIterator("KMGTPE");
        for (int i = 40; i >= 0 && absB > 0xfffccccccccccccL >> i; i -= 10) {
            value >>= 10;
            ci.next();
        }
        value *= Long.signum(bytes);
        return String.format("%.1f %ciB", value / 1024.0, ci.current());
    }

}
 

Hein_nieH

Bekanntes Mitglied
Ok, das stimmt.

Ich versuche noch eine andere Lösung zu finden.
Das starten per Kommandozeile wie z.B. java -Xmx:1024m -Xms:1024m -jar myjar.jar

Hat bei mir nicht funktioniert (Fatal error). :-(

Gruss Hein_nieH
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Apache fop -- welche Möglichkeit gibt es um den Fortschritt anzuzeigen (Progressbar) Allgemeine Java-Themen 5
B Schnittstelle zwischen MySQL und Apache Allgemeine Java-Themen 8
O Wie kann ich in Apache POI (Excel Dateien schreiben) Datumszellen in Excel erzeugen Allgemeine Java-Themen 6
F Fehlermeldung: java.lang.NoClassDefFoundError: org/apache/commons/net/ntp/NTPUDPClient Allgemeine Java-Themen 6
N Apache POI/ neue Reihe in Excel mit einem Button Allgemeine Java-Themen 2
I Apache POI Bild in Word ersetzen Allgemeine Java-Themen 15
O xlsx Datei auslesen mit POI Apache liest keine LEERZELLEN Allgemeine Java-Themen 6
O xlsx Datei auslesen mit POI von Apache wirft seltsamen Fehler. Allgemeine Java-Themen 11
L APACHE POI PIVOT TABELLEN Allgemeine Java-Themen 4
L Apache POI Datenquelle Allgemeine Java-Themen 1
S Apache POI Filtern nach bestimmten Kriterium Allgemeine Java-Themen 1
L JavaFX JavaFX Chart in Apache Poi Excel Datei Allgemeine Java-Themen 2
F Operationen/Methoden einen WebService im Browser mit Apache Axis aufrufen Allgemeine Java-Themen 4
F Input/Output NullPointerException, aber wieso? [Apache POI] Allgemeine Java-Themen 11
F Input/Output NullPointerException with Apache POI Allgemeine Java-Themen 7
E HILFE !! Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils Allgemeine Java-Themen 4
J Apache POI - No external workbook with name Allgemeine Java-Themen 5
M Suche aktuelle Apache Poi Bibliothek zum Einbinden in mein Programm Allgemeine Java-Themen 2
M Apache Tika: Warnmeldungen und Beispielcode Allgemeine Java-Themen 12
X Performance für Tomcat / Apache optimieren Allgemeine Java-Themen 2
G Ant Probleme bei einer Installation die Apache ant+ivy verwendet Allgemeine Java-Themen 14
FrittenFritze Swing Apache Batik - Zoom an einer bestimmten Stelle Allgemeine Java-Themen 4
K Apache poi: Deprecated getCellType Allgemeine Java-Themen 3
J Apache POI Excel- Blattschutz aufheben Allgemeine Java-Themen 2
I Apache POI Word Text einfügen Allgemeine Java-Themen 26
T Geschlossen: Apache POI - Excel einlesen Allgemeine Java-Themen 0
K Apache POI Word Tabelle Zellen verbinden Allgemeine Java-Themen 4
K Apache POI Word Tabelle Spaltenbreite festlegen Allgemeine Java-Themen 7
K Apache POI Word bestimmte Textstellen bearbeiten Allgemeine Java-Themen 1
R Apache POI XSSF Allgemeine Java-Themen 2
E Apache POI Powerpoint Verlinkungen ändern Allgemeine Java-Themen 4
T xls-Datei per Apache Commons CsvParser einlesen UTF-8 Zeichen russische Zeichen Allgemeine Java-Themen 2
zer0zer0 Best Practice apache common cli - optionen für hilfe ausblenden Allgemeine Java-Themen 5
S Eclipse Apache Camel FTP: Fehlerbehandlung, wie? Allgemeine Java-Themen 2
H Excel Datei einlesen mit Apache POI Allgemeine Java-Themen 1
GianaSisters Apache POI - Hyperlink erstellen Allgemeine Java-Themen 0
reibi Apache PDFBox Allgemeine Java-Themen 0
T Mit Apache Poi Daten aus einer Excel Tabelle kopieren und in Word einfügen Allgemeine Java-Themen 1
C Was bekomme ich eine Nullpointerexception? (Apache POI) Allgemeine Java-Themen 3
S OOP Apache Commons Math - Verwendung von Genetics - Wie werden Daten in Chromosomen gespeichert? Allgemeine Java-Themen 4
H Apache POI HSSF - Farbe/Rahmen etc. ohne Style-Vorlage? Allgemeine Java-Themen 4
E Apache POI-Datei lesen und umschreiben Allgemeine Java-Themen 8
G Input/Output Apache POI Excel Allgemeine Java-Themen 5
L Apache CLI: Args[] übergeben Allgemeine Java-Themen 3
P docx mit Apache POI auslesen, verändern und zurückschreiben Allgemeine Java-Themen 2
N Applet Apache Poi Wert einer Formel ausgeben Allgemeine Java-Themen 5
L Apache Common CLI Allgemeine Java-Themen 4
J Webstart (auf Apache) jnlp wird nicht geladen Allgemeine Java-Themen 2
S HTTP Apache HTTPClient Problem Allgemeine Java-Themen 4
R org.apache.http kompletter Internetausfall Allgemeine Java-Themen 7
J xlsx Dateien lesen OHNE apache POI Allgemeine Java-Themen 6
V Für was benötigt man Apache Common Allgemeine Java-Themen 3
V Apache POI Excel Datum auslesen Allgemeine Java-Themen 6
V Apache POI Excel Sheet auslesen Allgemeine Java-Themen 5
B Problem mit RegEs und org.apache.regexp.RE Allgemeine Java-Themen 5
T Apache POI Export EXCEL - [Zahlen-Werte] Allgemeine Java-Themen 1
Landei Erfahrungen mit JavaConfig oder Apache Commons Config? Allgemeine Java-Themen 3
J Apache FTPClient upload Allgemeine Java-Themen 3
A Apache License, Version 2.0 Allgemeine Java-Themen 7
S Bzip2 apache commons-compress Allgemeine Java-Themen 3
Chris81T Apache FOP 0.20-5 mit JNI von C++ Code aufrufen Allgemeine Java-Themen 8
C Apache POI(HSSF) Conditional Formatting Allgemeine Java-Themen 3
G Apache soll mit SVN zusammenarbeiten Allgemeine Java-Themen 3
E Apache Commons - PropertyConfiguration - Autosave Allgemeine Java-Themen 2
G Servlet über apache Tomcat ansprechen Allgemeine Java-Themen 6
alexpetri DirectoryWalker apache.commons Allgemeine Java-Themen 3
S Apache Commons Net geht nicht Allgemeine Java-Themen 5
G mit Apache-Jakarta-POI auch Graphiken aus Excel einlesen? Allgemeine Java-Themen 3
T Apache Lucene Allgemeine Java-Themen 2
Q Ant und org.apache.log4j.xml.DOMConfigurator Problem Allgemeine Java-Themen 2
M Java Webserver - Tomcat alleine oder zusammen mit Apache? Allgemeine Java-Themen 3
L Java OutOfMemoryError Java heap space Allgemeine Java-Themen 3
B OutOfMemoryError kommt nicht/Bug in Java? Allgemeine Java-Themen 2
Maxim6394 OutOfMemoryError nicht nachvollziehbar Allgemeine Java-Themen 8
reibi OutOfMemoryError bei Behandlung von BufferedImage's Allgemeine Java-Themen 6
E OutOfMemoryError bei Verschlüsselungsalgorithmus Allgemeine Java-Themen 3
L java.lang.OutOfMemoryError: Java heap space Allgemeine Java-Themen 10
H java.lang.OutOfMemoryError bei der wiederholten Erzeugng von Threads Allgemeine Java-Themen 8
D OutOfMemoryError:Java hep space Allgemeine Java-Themen 7
M OutOfMemoryError in nebenläufigen Threads Allgemeine Java-Themen 6
C nach ca. 1 Stunde OutOfMemoryError Allgemeine Java-Themen 15
Shoox OutOfMemoryError Allgemeine Java-Themen 10
J Crawler selbst geschreiben: OutOfMemoryError Allgemeine Java-Themen 14
A OutOfMemoryError: Java heap space Allgemeine Java-Themen 11
K OutOfMemoryError: Java heap space troz -Xms1024m Allgemeine Java-Themen 2
P OutOfMemoryError beim XML erstellen bzw parsen, mehr RAM? Allgemeine Java-Themen 4
R OutofMemoryError bei CharArraywriter Allgemeine Java-Themen 5
F OutOfMemoryError: Java heap space - Speicher verändern Allgemeine Java-Themen 8
J java Thread java.lang.OutOfMemoryError: Java heap space Allgemeine Java-Themen 7
B OutOfMemoryError und Arraylisten Allgemeine Java-Themen 2
G Error: java.lang.OutOfMemoryError: Java heap space Allgemeine Java-Themen 2
S java.lang.OutOfMemoryError: Java Allgemeine Java-Themen 22
M java.lang.OutOfMemoryError Allgemeine Java-Themen 2
F java.lang.OutOfMemoryError: Java heap space Allgemeine Java-Themen 22
S fehlermeldung java.lang.OutOfMemoryError Allgemeine Java-Themen 5
G outOfMemoryError beim Einlesen einer Datei abfangen? Allgemeine Java-Themen 13
H Skalieren von Image -> java.lang.OutOfMemoryError - WARUM Allgemeine Java-Themen 18
G jTable-Problem --> java.lang.OutOfMemoryError Allgemeine Java-Themen 5
F java.lang.OutOfMemoryError Allgemeine Java-Themen 13
C OutOfMemoryError lokalisieren Allgemeine Java-Themen 9

Ähnliche Java Themen


Oben