メモリ節約

Chimpanzeeはメモリ節約を第一に考えるフレームワークです。 そのためプログラムやデータを使うときだけ読み込み、不要になったら破棄できるようにしています。

最近のプログラミングではあまりメモリ消費を気にせず、使用する(可能性のある)クラスやデータをすべてメモリ上に展開してから利用することも多くなっています。 特にフレームワークにおいてはそれが顕著です。

確かにメモリが無限にある場合はそうすることで動作も速くなることがありますが、 やはりメモリは有限のもの。大規模システムや高負荷システムではサーバの台数にもかかわってきます。「同じことを実現するのに少ないメモリで済む。その結果サーバ台数を減らし、コスト削減できる。」これを目指した唯一のフレームワークでしょう。

動的読込によるメモリ消費量の削減

あらゆる機能を動的にインスタンスを生成して使用するようにしました。 モデルや外部モジュールだけでなく、定数テーブルや設定ファイルまでをも動的に読み込むことで、 極力余分なコードはメモリ上に展開しないようにしてメモリの消費を抑えました。

各機能は細かくクラスに分類されており、 機能を使用する際はその都度クラスのインスタンスを生成します。 インスタンスを生成しない限りクラスを読み込まないので、その分のメモリを消費しません。モデルやライブラリのみならず、 従来一度に読み込んでいた設定ファイル、定数テーブル、ユーザ定義関数までをも個別にクラスとして分けて実装し、 使用する時だけインスタンスを生成します。

また具体的な処理は基底クラス内ではなく、そこからメソッドごとに呼び出されるコアクラスにすべて記述されています。 というのも基底クラス内に処理を記述すると基底クラスファイルを読み込んだ時に処理のコードが展開されてしまい、 実際には使わないメソッドの分までメモリを消費してしまうことになります。 Chimpanzeeでは具体的な処理をコアに任せることで、メソッドを実行した時に必要なだけのメモリが消費されるようになっているのです。

クラスインスタンスの保持と破棄

Chimpanzeeではクラスインスタンスを生成する際、 インスタンスが使用するメモリを保持する方法と、 使い終わったらすぐに破棄する方法を用意しました。 これによってクラスを使用し終えたらメモリを解放し、余計なメモリを極力消費しないようにすることが可能です。

ページトップへ