2

私のアプリケーションでは、2 つの docx ファイルを比較し、1 つの html 比較ファイルを作成しています。表示する時間

java.lang.OutOfMemoryError: Java heap space error,

誰でもこれについて助けてもらえますか?

4

4 に答える 4

2

Docx4jDriver クラスを使用していないため、メモリが不足しています。これにより、最初に段落レベルの差分を実行することで、差分の問題がより扱いやすくなります。

次のように使用します。

        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);
于 2011-09-10T13:12:14.857 に答える
0

VM引数として-Xmxおよび-Xmxを使用すると、ヒープスペースを大きくすることができます。

ヒープサイズの調整について詳しくはこちら、またはヒープサイズについてはこちら

于 2011-09-05T12:49:36.617 に答える
0

仮定や知的な推測ではなく、アプリケーションのプロファイリングを試みてください。Jdk に同梱されている visualvm または console を使用できます。

また、jmap を使用してアプリケーションのヒープ ダンプを取得し、jhat または eclipse mat を使用して (私はこれが好きです。ググってみてください)、メモリを消費しているものを確認し、異常な動作を監視することもできます。

于 2011-09-10T13:25:54.263 に答える
0

コマンド ライン引数-Xmx<maximum heap size>およびを使用して、Java ヒープ サイズを増やしてみてください-Xms<minimum heap size>

また、コード内で、実際にヒープ サイズを増やしたことを次のようにテストします。

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

Differencer.diffこれは、117 番に電話する前に行ってください。

于 2011-09-06T13:54:50.473 に答える