メモリの使用量を監視して、使用量によってガベージコレクションを実行したい
キーワード:CLI,外部アプリケーション起動,メモリ,ヒープ,heap,GC,ガベージコレクション
概要
メモリの使用量を確認したい場合、CLIコマンド「memstat」を使用します。また、不要になったメモリ領域を明示的に解放したい場合、ガベージコレクション処理を使用します。
サンプルプロジェクトの説明
CLIコマンド「memstat」を実行し、実行結果からメモリ使用量を確認します。

メモリ使用量が規定値より多い場合、メモリの空き領域を確保するガベージコレクションを実行します。

処理の流れ
サンプルプロジェクトの処理の流れは以下の通りです。- 「スクリプト呼び出し処理」でCLIバッチを実行する処理を呼び出し、「memstat -m」コマンドを実行します。
- -mオプションはメモリの単位を「メガバイト」で表示します。
- memstatコマンドの実行結果は以下のようになります。
メモリ使用量 : 30 メガバイト
メモリ空き容量 : 93 メガバイト
総メモリ容量 : 123 メガバイト
- 「CSVファイル読み取り処理」で実行結果を読み取ります。
- 「繰り返し処理(データ件数)」・「条件分岐処理」でメモリ使用量を抽出します。
- 「条件分岐処理」でメモリ使用量を判定し、100以上の場合は「ガベージコレクション処理」を実行します。
ポイントとなる機能
名前 | 説明 | ツールパレット上の場所 |
---|---|---|
スクリプト呼び出し処理 | プロジェクト内のほかのスクリプトやサーバに登録されたスクリプトを呼び出します。 | 「基本」-「処理」-「スクリプト呼び出し」 |
ガベージコレクション処理 | 不要になったメモリ領域を開放します。 | 「基本」-「処理」-「ガベージコレクション」 |
処理のポイント
実行したいCLIコマンドを「CLIコマンド設定ファイル」にあらかじめ記述しておくことで、スクリプトからCLIバッチを使用してCLIコマンドを実行できます。

memstatコマンドの実行結果を読み取ることによって、メモリ使用量を確認できます。
サンプルプロジェクトの使用方法
上記処理を実装したサンプルプロジェクトを用意しています。サンプルプロジェクトを使用する場合の手順は、以下の通りです。サンプルプロジェクトのダウンロード | 逆引きリファレンス シナリオ096のサンプルプロジェクト |
---|
- サンプルプロジェクトの展開
サンプルプロジェクトファイル「rl_reference_096.zip」を展開します。 - プロジェクトのアップロード
「rl_reference_096.zip」を展開後に作成される「rl_reference_096プロジェクト」ディレクトリがプロジェクトファイルとなります。
DataSpider Studioを起動し、マイプロジェクトの画面から[ファイル]-[ローカルからアップロード]で展開したディレクトリ「rl_reference_096プロジェクト」をアップロードしてください。 - CLIランチャの準備
CLIランチャを用意します。
「スクリプトからCLIコマンドを実行したい」で作成した「rl_reference_095プロジェクト」を、サービス名「CLIランチャ」でサービス登録してください。
スクリプトの作成手順

- 「memstat -m」コマンドの実行結果の格納に使用するスクリプト変数を作成します。
- スクリプト変数のプロパティは、以下のように設定します。
スクリプト変数のプロパティ
変数名 変数型 初期値 行名 文字列型 メモリ量 整数型
- スクリプト変数のプロパティは、以下のように設定します。
- デザイナのツールパレットの「基本」-「処理」-「スクリプト呼び出し」から、スクリプト呼び出し処理をスクリプトキャンバスに配置します。
- スクリプト呼び出し処理の設定は、以下のように行います。
[必須設定]タブ
[入出力]タブ
処理のポイント
- 呼び出しているスクリプトの詳細については、「スクリプトからCLIコマンドを実行したい」を参照してください。
- 「CLIコマンドファイル名」に実行したいCLIコマンド設定ファイル名を入力します。
- スクリプト呼び出し処理の設定は、以下のように行います。
- デザイナのツールパレット「ファイル」-「CSV」-「CSVファイル読み取り」から、CSVファイル読み取り処理をスクリプトキャンバスに配置します。
- CSVファイル読み取り処理の設定は、以下のように行います。
[必須設定]タブ
- CSVファイル読み取り処理の設定は、以下のように行います。
- デザイナのツールパレット「基本」-「フロー」-「繰り返し(データ件数)」から、繰り返し(データ件数)処理をスクリプトキャンバスに配置します。
- 繰り返し(データ件数)処理の設定は、以下のように行います。
[必須設定]タブ
- 繰り返し(データ件数)処理の設定は、以下のように行います。
- デザイナのツールパレット「変換」-「基本」-「マッピング」から、マッピング処理をスクリプトキャンバスに配置します。
- マッピング処理のMapperエディタを開き、スクリプト変数に値を代入する処理を作成します。
- マッピングキャンバスは、以下のように設定します。
マッピングキャンバス
番号 ロジック名 説明 ツールパレット上の場所 (1) 両側トリム 入力文字列の両側をトリムします。 「文字列」-「トリム」-「両側トリム」 (2) 指定文字より前 入力文字列の指定文字より前を返します。
[必須設定]タブの[区切り文字列]には「メガ」と入力します。「文字列」-「関数」-「指定文字より前」 (3) 両側トリム 入力文字列の両側をトリムします。 「文字列」-「トリム」-「両側トリム」
- マッピングキャンバスは、以下のように設定します。
- デザイナのツールパレット「基本」-「フロー」-「条件分岐」から、条件分岐処理をスクリプトキャンバスに配置します。
- 条件の設定は、以下のように行います。
[必須設定]タブ
- 条件の設定は、以下のように行います。
- デザイナのツールパレット「基本」-「フロー」-「条件分岐」から、条件分岐処理をスクリプトキャンバスに配置します。
- 条件の設定は、以下のように行います。
[必須設定]タブ
- 条件の設定は、以下のように行います。
- デザイナのツールパレットの「基本」-「処理」-「ガベージコレクション」から、ガベージコレクション処理をスクリプトキャンバスに配置します。
- ガベージコレクション処理のプロパティはありません。
- スクリプトを実行し、正常終了すれば成功です。