概要導入Zend_Memory コンポーネントは、 限られたメモリ環境でデータを管理するためのものです。 メモリマネージャが要求に応じて メモリオブジェクト (メモリコンテナ) を作成し、必要に応じて透過的にスワップ/読み込みを行います。 たとえば、あるオブジェクトを作成あるいは読み込むことによって メモリの使用量が制限値を超えてしまう場合に、 管理しているオブジェクトのいくつかをメモリの外部の キャッシュにコピーします。 このようにして、管理しているオブジェクトのメモリ使用量が 制限値を超えないようにします。 メモリマネージャの保存機能は、 Zend_Cache バックエンド を使用しています。 Example #1 Zend_Memory コンポーネントの使用法 Zend_Memory::factory() は、 指定したバックエンドオプションでメモリマネージャオブジェクトの インスタンスを作成します。
動作原理Zend_Memory コンポーネントは、以下の概念で構成されています。
メモリマネージャメモリマネージャは、アプリケーションからの要求に応じて (ロックされた、あるいは移動可能な) メモリオブジェクトを作成し、 それをメモリコンテナオブジェクトにラッピングしたものを返します。 メモリコンテナメモリコンテナは、文字列型の属性 value を (仮想的に、あるいは実際に) 保持します。 この属性には、メモリオブジェクトの作成時に指定された値が含まれます。 この属性 value は、オブジェクトのプロパティとして扱うことができます。
ロックされたメモリロックされたメモリオブジェクトは、常にメモリ内に保持されます。 ロックされたメモリに保存されたデータは、 決してキャッシュにスワップされることはありません。 移動可能なメモリ移動可能なメモリオブジェクトは、 必要に応じて Zend_Memory がキャッシュにスワップしたり キャッシュから読み戻したりします。この処理は透過的に行われます。 メモリマネージャは、指定した最小値より小さいサイズのオブジェクトはスワップしません。 これは、パフォーマンスを考慮した判断です。詳細は このセクション を参照してください。
|