OutOfMemory 対策

PizzaFactoryに含まれるGNUツールチェインは,CruiseControlでビルドしている.
具体的には,config.xml で,ant を呼び,antの中でCVS update → configure → make → make install を行う.
GCCは,3.4.6ベースで変更は余り無いのだけれど,binutils/gdb/newlib は,本家のCVS mainlineを追いかけているので,毎日ビルドがかかる.
最近,いくつかのターゲット用のビルドにおいて,OutOfMemoryによりantが落ちるようになった.

ターゲットを見ると,sh-elf と m68k-elf.確かに,この2つは,他のターゲットに比べてバリエーションが多く,ビルド時間も長く,ログも長い.

そんなわけで,対策を行う.

今回得た結論

CruiseControlで,ログメッセージが大量に出るantタスクがある場合,config.xml には useLogger="true"を噛ませろ
環境依存かもしれないけれど,その辺は自己責任でヨロシク.

以下は,挫折と安堵の歴史.

ANT_OPTS

cruisecontrol.sh に,

ANT_OPTS=-Xmx1024m

などしてみた.効果無いらしい.

JDK1.5.0_11 へアップグレード

使っていたJDKバージョンは1.5.0_6.リリースノートを見ると,OutOfMemoryに関して修正があったとの記述有り.
これか!? と思ってアップグレードするも,効果無し.

<ant>
  <vmargs value="-Xmx=1024m"/>

などするも,効果無し.

useLogger

ThoughtWorksのWikiエントリを読む.…useLogger="true" を試せ,とな?

…直ったっぽい.