記事
Megumi Kakechi · 2021年7月19日 2m read

<STORE>エラーが発生する場合の対処法について

これは InterSystems FAQ サイトの記事です。

<STORE> エラーは サーバ上のプロセスが使用しているプロセス個別メモリ容量が上限に達した場合に発生します。
このメモリはオブジェクトを開いたり、ローカル変数を使用することで消費されるものとなります。
このエラーは サーバ上のプロセスでメモリを大量に使用した場合に発生します。
バージョン2012.2では、プロセス個別のメモリ容量の最大値が大幅に拡張されました(約2TB)。

この変更により、ローカル変数の使用領域を大幅に増やすことができるようになったため 特別な状況が発生しない限り(プログラムのバグにより大量のローカル変数を作成し続ける等) エラーを回避できるようになりました。

但し、このためのメモリ領域は、プログラムが動作するハードウェアが提供する資源の一つですので物理的な制限は当然あります。
システム全体の資源管理を念頭に置き慎重な使用をお勧めします。

設定値詳細については以下ドキュメントをご参照ください。

プロセスあたりの最大メモリ(KB)の設定値について


プロセスが使用可能なメモリの上限は、管理ポータル(バージョン2010.2以前では[システム管理ポータル])から変更できます。
システム構成パラメータ名は bbsiz で、既定値には、262,144 KB が設定され bbsiz で設定した値まで拡張します。

bbsiz の設定は以下より行います。

管理ポータル:
[システム管理] > [構成 > [システム構成] > [メモリと開始設定] : [プロセスあたりの最大メモリ(KB)]  

※補足
 既定値については、2012.1以前では、16,384 KB が設定されます。
 設定値の範囲については以下の通りです。

 【バージョン2012.2~】 128 ~ 2,147,483,648 KB
 【バージョン2009.1~2012.1】 128 ~ 49,536 KB
 【~バージョン2008.2】 128 ~ 47,630 KB 


以下、エラーが発生する例を示します。(ターミナルでの実行例)

USER>for i=1:1 set a(i)="some string....."
FOR i=1:1 SET a(i)="some string....."
          ^
<STORE>
USER>


プロセスのメモリ使用状況は、管理ポータルの [システムオペレーション] > [プロセス] の一覧表示から各プロセスの詳細を表示すると、“使用中のメモリ” の項目で確認できます。


以下の関連トピックもあわせてご参照ください。

【FAQ】InterSystems製品のプロセスが使用するメモリ量を教えてください。  

ローカル変数は最大どのくらいまで使うことができるのか

 

00
0 0 0 10
Log in or sign up to continue