Frage

In meiner Anwendung vergleiche ich zwei DOCX Zeit es zeigt die

java.lang.OutOfMemoryError: Java heap space error,

Kann jemand bitte dabei helfen?

War es hilfreich?

Lösung

Sie haben keinen Speicher mehr, weil Sie die DOCX4JDriver -Klasse nicht verwenden, was das Diff -Problem durch einen Absatzebene zuerst besser übermittelbar macht.

Benutze es so:

        Body newerBody = ((Document)newerPackage.getMainDocumentPart().getJaxbElement()).getBody();
        Body olderBody = ((Document)olderPackage.getMainDocumentPart().getJaxbElement()).getBody();

        // 2. Do the differencing
        java.io.StringWriter sw = new java.io.StringWriter();
        Docx4jDriver.diff( XmlUtils.marshaltoW3CDomDocument(newerBody).getDocumentElement(),
                        XmlUtils.marshaltoW3CDomDocument(olderBody).getDocumentElement(),
                           sw);

        // 3. Get the result
        String contentStr = sw.toString();
        System.out.println("Result: \n\n " + contentStr);
        Body newBody = (Body) org.docx4j.XmlUtils
                        .unmarshalString(contentStr);

Andere Tipps

Sie können den Heap -Speicherplatz mit -xmx und -xmx als VM -Argumente größer machen

Hier mehr über Haufengrößenabstimmung oder hier Wurfgröße

Versuchen Sie, die Java -Haufengröße mit den Befehlszeilenargumenten zu erhöhen -Xmx<maximum heap size> und -Xms<minimum heap size>.

Auch in Ihrem Code testen Sie, dass Sie tatsächlich die Haufengröße mit Folgendem erhöht haben:

long heapSize = Runtime.getRuntime().totalMemory();
System.out.println("Heap Size = " + heapSize);

Tun Sie dies, bevor Sie anrufen Differencer.diff Online 117.

Versuchen Sie, Ihre Anwendung zu profilieren, anstatt Annahmen oder intelligente Vermutungen zu treffen. Sie können VisualVM oder Konsole verwenden, die mit dem JDK geliefert werden.

Außerdem können Sie einen Heap -Dump Ihrer Anwendung mit JMAP nehmen und dann entweder JHAT oder Eclipse MAT (ich bevorzuge dies, Google It) verwenden, um zu sehen, was den Speicher verbraucht, und nach ungewöhnlichem Verhalten Ausschau halten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top