我在使用jdk 1.5.0_11在Linux下編譯ant時編譯了一個java.lang.OutOfMemoryError:PermGen錯誤。同一個項目在windows下編譯沒有問題。在Ant任務任務中處理PermGen錯誤
通常這與分配給JVM的MaxPermSize有關。伊拉克利Nadareishvili有best explanations of PermGen errors之一,並引導設置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
任何人都可以釋放更多的光線嗎?這是一個確定的解決辦法嗎?
@saua感謝您的加固!如果我們再次遇到PermGen問題,我認爲您的重構建議將是下一步。 – tardate 2008-12-11 01:40:26