サポート > よくある質問と回答 > トラブルシューティング > ビルド時のメモリ不足
ビルド中に「OutOfMemoryError」と表示されました。
ビルド時における(作業用)メモリ領域が不足している場合、「OutOfMemory」というエラーが発生します。 この対策は、各ポイントにおけるメモリ設定値を増やすことです。以下、個別に対応方法を示します。
Wagby R5 におけるビルド時のメモリ不足の対応
定義ファイル変換時の場合
- $(DEVHOME)\env\build-dev.xml ファイルをテキストエディタで開きます。
- 以下の記載が 4 カ所あります。この "256" という値を増やします。
... <jvmarg value="-Xmx256M"/> ...
- 保存後、Wagby ビルダで再び「定義ファイル変換」を行ってください。
ビルド処理の場合 (1) javac (コンパイル) 時のエラー
モデル数、または 1 モデル内のモデル項目数が多い場合に発生します。
ビルドログ (env\logs\buildlog.txt) を確認し、"javac" という文字の後に OutOfMemory が出ている場合は、このケースです。
- $(DEVHOME)\xls-project\project_env.xlsをExcelで開きます。
- 「build」のシートを開きます。
- 「Javaコンパイル実行時のメモリサイズ(MB)」の数値を増やします。デフォルトでは192になっていますが、これを増やします。
次のパターンを試してください。
- 256
- 384
- 512
- 768
- 1024
- ビルドを行います。もし同様のビルドエラーが発生した場合は(3)の数値をさらに増やして、ビルドを行います。
ビルド処理の場合 (2) Relaxer処理時のエラー
1 つのモデルに数百個のモデル項目を設定した場合、そのモデルに対応した Java ソースコードを生成する段階で OutOfMemory となる場合があります。
ビルドログ (env\logs\buildlog.txt) を確認し、"Relaxer" という文字の後に OutOfMemory が出ている場合は、このケースです。
- $(DEVHOME)\env\work\srcgen\build.xml をテキストエディタで開きます。
- 「<target name="do_relaxer"」で始まる行を探します。
- 以下の太字文字「<jvmarg value=...」を挿入します。
<!-- Do relaxer --> <target name="do_relaxer" depends="do_relaxer_check" if="create.file"> <delete quiet="false" failonerror="false"> <fileset dir="${relaxgen}/${targetdir}" includes="**/*.java"/> <fileset dir="${classdir}/${targetdir}" includes="**/*.class"/> </delete> <java jar="${relaxer_jardir}/Relaxer.jar" fork="true" failonerror="true"> <jvmarg value="-Xmx128M"/> <classpath> <pathelement location="${relaxer_jardir}"/> </classpath> <arg value="-verbose"/> <arg line="${option}"/> <arg value="-dir:${relaxgen}"/> <arg value="-dir.package"/> <arg value="-java.package.library:${jfc.schemapath}.model"/> <arg value="-package:${targetpath}"/> <arg value="${worksrc}/${targetdir}/${targetname}.${relaxschemasuffix}"/> </java> </target>value の後に続く数値が足りない場合は、適当に増やしてください。省略時の標準は 64M となっています。 - Wagby ビルダを起動し「ビルド」処理を実行します。
値を増やす場合は、開発機の搭載メモリ量を超えないようにしてください。上限の目安は、搭載メモリ量の半分程度をみておくとよいでしょう。
