メモリ不足について
商品スタッフII使用中にメモリ不足になることがあります。ここでは、その理由と対策について述べます。
メモリ不足の原因と状況
特にメモリ不足になりやすいのは、「商品インポート」などでExcelやCSVファイルを読み込む場合です。
ファイルから読み込んだデータをすべて一時的にメモリに保持するため、ファイルの大きさに比較してメモリ容量が小さいとメモリ不足に陥ります。例えば、数万行といった規模のExce/CSVファイルを読み込むと、以下のダイアログが表示されることがあります。
最も簡単な対策としては、読み込む対象のExcel/CSVファイル等を複数に分割し、小分けにして処理することです。
商品スタッフII端末の利用するメモリ容量の確認
商品スタッフIIはJava製のプログラムです。他のJava製のプログラムと同様ですが、商品スタッフIIの利用するデフォルトの最大メモリ量は以下になります。
パソコンの実装メモリ量の1/4
例えば、パソコンのメモリが8GBとすると、商品スタッフIIの利用する最大メモリ量は2Gになります。この容量を確認するには、以下の操作をします。
上の最大量は「1,048,576KB」となっていますが、これはおおよそ1000MB=1GBとなっています。
この容量で不足する場合、次の方法で利用する最大メモリ量を大きくすることができます。
商品スタッフII端末の利用する最大メモリ量の変更
端末の利用する最大メモリ量を変更するには、サーバ起動設定を設定します。この値をサーバ起動時に指定することにより、端末が起動される際にサーバから端末に設定値が伝達される仕組みになっています。
以下は最大量を4GBに設定する例です。
termVmArgs=-Xmx4g
4gで4GBを表します、MBで指定するにはmを使います。上記の設定は以下と同じです。
termVmArgs=-Xmx4000m
この設定を行い、いったんサーバを停止し、再度起動します。その後で端末を起動すると、この設定が適用されて端末が起動します。サーバ起動時設定を参照してください。
注意:大きすぎる値を指定すると、端末が起動しなくなります。パソコンの実装メモリ量が4GBだからといって、実際には4gは指定できません。他に動作中のソフトにもよりますが、最大として実装メモリ量の半分、この場合には2gを指定できれば良好というところです。
大きすぎる最大量を指定した場合
大きすぎる最大量を指定した場合には、端末が起動しなくなります。例えば、サーバコントローラから端末を起動した場合には、サーバコントローラのログに以下のような表示が現れます。
TERMINAL:Error occurred during initialization of VM
TERMINAL:Could not reserve enough space for 2097152KB object heap
これは2gを指定した例ですが、この大きさを確保できず、端末が起動しなくなった例です。