メモリの使用量を監視して、使用量によってガベージコレクションを実行したい

キーワード:CLI,外部アプリケーション起動,メモリ,ヒープ,heap,GC,ガベージコレクション
シナリオ一覧に戻る

概要

メモリの使用量を確認したい場合、CLIコマンド「memstat」を使用します。
また、不要になったメモリ領域を明示的に開放したい場合、ガベージコレクション処理を使用します。

サンプルプロジェクトの説明

CLIコマンド「memstat」を実行し、実行結果からメモリ使用量を確認します。
スクリプトからCLIコマンドを実行する方法については、「スクリプトからCLIコマンドを実行したい」を参照してください。
本スクリプトでは、「スクリプトからCLIコマンドを実行したい」で作成した「rl_reference_095プロジェクト」をサービス登録して使用します。

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

処理の流れ

サンプルプロジェクトの処理の流れは以下の通りです。
  1. スクリプト呼び出し処理」でCLIバッチを実行する処理を呼び出し、「memstat -m」コマンドを実行します。
  2. CSVファイル読み取り処理」で実行結果を読み取ります。
  3. 繰り返し処理(データ件数)」・「条件分岐処理」でメモリ使用量を抽出します。
  4. 条件分岐処理」でメモリ使用量を判定し、100以上の場合は「ガベージコレクション処理」を実行します。

ポイントとなる機能

名前 説明 ツールパレット上の場所
スクリプト呼び出し処理 プロジェクト内の他のスクリプトやサーバに登録されたスクリプトを呼び出します。 「基本」-「処理」-「スクリプト呼び出し」
ガベージコレクション処理 不要になったメモリ領域を開放します。 「基本」-「処理」-「ガベージコレクション」

処理のポイント

実行したいCLIコマンドを「CLIコマンド設定ファイル」にあらかじめ記述しておくことで、スクリプトからCLIバッチを使用してCLIコマンドを実行できます。
CLIコマンド設定ファイルの詳細については、「CLIバッチについて」を参照してください。
本シナリオではCLIコマンド「memstat」を実行します。
memstatコマンドの実行結果を読み取ることによって、メモリ使用量を確認できます。

サンプルプロジェクトの使用方法

上記処理を実装したサンプルプロジェクトを用意しています。サンプルプロジェクトを使用する場合の手順は、以下の通りです。

サンプルプロジェクトファイル名 rl_reference_096.zip
  1. サンプルプロジェクトの展開
    サンプルプロジェクトファイル「rl_reference_096.zip」を展開します。

  2. プロジェクトのアップロード
    「rl_reference_096.zip」を展開後に作成される「rl_reference_096プロジェクト」ディレクトリがプロジェクトファイルとなります。
    DataSpider Studioを起動し、マイプロジェクトの画面から[ファイル]-[ローカルからアップロード]で展開したディレクトリ「rl_reference_096プロジェクト」をアップロードしてください。

  3. CLIランチャの準備
    CLIランチャを用意します。
    スクリプトからCLIコマンドを実行したい」で作成した「rl_reference_095プロジェクト」を、サービス名「CLIランチャ」でサービス登録してください。

スクリプトの作成手順

プロセスフローおよびデータフローは、「サンプルプロジェクトの説明」のスクリプト画像を参照して適宜設定してください。
  1. 「memstat -m」コマンドの実行結果の格納に使用するスクリプト変数を作成します。

  2. デザイナのツールパレットの「基本」-「処理」-「スクリプト呼び出し」から、スクリプト呼び出し処理をスクリプトキャンバスに配置します。

  3. デザイナのツールパレット「ファイル」-「CSV」-「CSVファイル読み取り」から、CSVファイル読み取り処理をスクリプトキャンバスに配置します。

  4. デザイナのツールパレット「基本」-「フロー」-「繰り返し(データ件数)」から、繰り返し(データ件数)処理をスクリプトキャンバスに配置します。

  5. デザイナのツールパレット「変換」-「基本」-「マッピング」から、マッピング処理をスクリプトキャンバスに配置します。

  6. マッピング処理のMapperエディタを開き、スクリプト変数に値を代入する処理を作成します。

  7. デザイナのツールパレット「基本」-「フロー」-「条件分岐」から、条件分岐処理をスクリプトキャンバスに配置します。

  8. デザイナのツールパレット「基本」-「フロー」-「条件分岐」から、条件分岐処理をスクリプトキャンバスに配置します。

  9. デザイナのツールパレットの「基本」-「処理」-「ガベージコレクション」から、ガベージコレクション処理をスクリプトキャンバスに配置します。

  10. スクリプトを実行し、正常終了すれば成功です。