2016-04-04 6 views
0

私はを取得しています。java.lang.OutOfMemoryError:Javaヒープスペース XMLに多数のオブジェクトをマーシャリングしようとしている間に例外が発生しましたが、オブジェクトまたはそれ未満のxmlファイルのサイズJAXB marshaller.marshal(message、fi);は本当に良かったです。今私のプロジェクトの新しい要件ごとに私はXMLファイルで私は新しい物語ごとにロジックを微調整しているデータを増やす必要があります。 しかし、ロジックを調整した後、レポートを実行すると、OOM例外がスローされた後、2-3回も正常に表示されます。JAXBを使用してXMLの多数のオブジェクトをマーシャリングしながらメモリを解放する

注:私はXms、Xmx、XX:MaxPermSizeを増やしましたが、同じ問題に直面しています。

この問題を解決するために私を助けてください。

+0

Xms、Xmx、およびXX:MaxPermSizeの値が反映されているかどうかを確認できますか。あなたは以下のようにjdk binフォルダ内のjmap appを呼び出すことでそれを行うことができます:./jmap -heap praveen

+0

こんにちはPraveen、私はLinux上で同じことを試みましたが、 "Jmap coammand not found"、http:// stackoverflow .com/questions/11237872/java-command-not-found-on-linuxにあります。 – hari

+0

cd locationOfJdkBinその後do /jmap -heapprocessid – praveen

答えて

0

java.lang.OutOfMemoryError:Javaヒープスペースは、通常、JVMがヒープスペースを使い果たしたときに発生します。

これは私が問題を引き起こしてその二番目のを前提とし、二つの理由あなたの場合

1. Memory leak 
2. excessive computation by the app 

に主に起因することができます。これは、Xmx値を現在の値より大きな値に設定することで解決できます。

tomcatを使用している場合は、tomcat bin内のsetenv.shでこれを行うことができます。 設定CATALINA_OPTS=Xmx1024M (or any other value)

+0

こんにちはPraveen、私はすでにXmx2048Mを使用していますが、私たちは同じ問題に直面しています。マーシャリングの場合、XMLで25 lakhの行を取得する方法はありますが、私はそれがOOMの理由かもしれないと考えました。あなたはJaxbマーシャリングでOOMを解決できるものをお勧めしますか? – hari

+0

@hariあなたのアプリケーションが持つことができる最大Xmx値は何ですか?制限がある場合は、XMLファイルをバッチで解析するか、何らかのキャッシュ戦略を考えることができます。 – praveen

+0

このリンクは役立つはずですhttp://stackoverflow.com/questions/26310595/how-to-parse-big-50-gb-xml-files-in-java – praveen

関連する問題