jdk 1.5.0_11 を使用して Linux で ant を使用してプロジェクトをコンパイルすると、java.lang.OutOfMemoryError: PermGen エラーが発生しました。同じプロジェクトが Windows で問題なくコンパイルされます。
通常、これは JVM に割り当てられた MaxPermSize に関連しています。Irakli Nadareishvili には、PermGenエラーの最良の説明の1 つと、 Java HotSpot VMOptions (例: -XX:MaxPermSize=128M)の設定ガイドがあります。
この場合、問題を特定のbpelc ant タスクにすばやく絞り込みました。
<bpelc input="${build.dir}/bpel/bpel.xml"
out="${build.dir}/output" rev="${version}" home="${bpel.home}"/>
現在、bpelc は javac のように compilerarg 要素を取らないと思います:
<javac srcdir="${src.dir}"
destdir="${classes.dir}"
classpathref="libraries">
<compilerarg value="-XX:MaxPermSize=128M"/>
</javac>
では、bpelc タスクのエラーを修正するにはどうすればよいでしょうか? これまでに思いついた最善の解決策は、ANT_OPTS環境変数を設定することです。これにより、現在までの問題は回避されているようです。
export ANT_OPTS=-XX:MaxPermSize=128m
誰かがもっと光を当てることができますか? それは確実な修正ですか?