1 <?xml version="1.0" encoding="UTF-8"?>
3 <!-- EN-Revision: 20827 -->
4 <sect1 id="zend.memory.memory-manager">
5 <title>メモリマネージャ</title>
7 <sect2 id="zend.memory.memory-manager.creation">
9 <title>メモリマネージャの作成</title>
13 (<classname>Zend_Memory_Manager</classname> オブジェクト) を作成するには、
14 <methodname>Zend_Memory::factory($backendName [, $backendOprions])</methodname>
19 最初の引数 <code>$backendName</code> は文字列で、
20 <classname>Zend_Cache</classname> がサポートするバックエンド実装のいずれかの名前を指定します。
24 二番目の引数 <code>$backendOptions</code> は省略可能で、
25 バックエンドに渡すオプションの配列を指定します。
28 <programlisting language="php"><![CDATA[
29 $backendOptions = array(
30 'cache_dir' => './tmp/' // スワップしたメモリブロックを配置するディレクトリ
33 $memoryManager = Zend_Memory::factory('File', $backendOptions);
37 <classname>Zend_Memory</classname> は <link linkend="zend.cache.backends">Zend_Cache のバックエンド</link>
42 標準の <classname>Zend_Cache</classname> のバックエンドに加え、特別な名前
43 '<code>None</code>' をバックエンド名として使用することもできます。
45 <programlisting language="php"><![CDATA[
46 $memoryManager = Zend_Memory::factory('None');
51 バックエンド名に '<code>None</code>' を使用すると、
52 メモリマネージャは決してメモリブロックをスワップしなくなります。
53 メモリの制限がない場合、あるいはオブジェクトのサイズが
54 決してメモリの制限に達しない場合などに有用です。
58 '<code>None</code>' バックエンドには何もオプションを指定する必要がありません。
63 <sect2 id="zend.memory.memory-manager.objects-management">
65 <title>メモリオブジェクトの管理</title>
68 この節では、管理しているメモリ内でのオブジェクトの作成や破棄の方法、
69 そしてメモリマネージャの挙動を設定する方法を説明します。
72 <sect3 id="zend.memory.memory-manager.objects-management.movable">
74 <title>移動可能なオブジェクトの作成</title>
77 移動可能なオブジェクト (スワップされる可能性のあるオブジェクト)
78 を作成するには、<methodname>Zend_Memory_Manager::create([$data])</methodname>
80 <programlisting language="php"><![CDATA[
81 $memObject = $memoryManager->create($data);
87 引数 <code>$data</code> は省略可能で、
88 オブジェクトの値を初期化するために使用します。
89 引数 <code>$data</code> を省略した場合は、値は空の文字列となります。
94 <sect3 id="zend.memory.memory-manager.objects-management.locked">
96 <title>ロックされたオブジェクトの作成</title>
99 ロックされたオブジェクト (スワップされないオブジェクト)
100 を作成するには、<methodname>Zend_Memory_Manager::createLocked([$data])</methodname>
102 <programlisting language="php"><![CDATA[
103 $memObject = $memoryManager->createLocked($data);
108 引数 <code>$data</code> は省略可能で、
109 オブジェクトの値を初期化するために使用します。
110 引数 <code>$data</code> を省略した場合は、値は空の文字列となります。
115 <sect3 id="zend.memory.memory-manager.objects-management.destruction">
117 <title>オブジェクトの破棄</title>
120 メモリオブジェクトは、それがスコープの外に出た際に
121 自動的に破棄され、メモリから削除されます。
123 <programlisting language="php"><![CDATA[
126 global $memoryManager, $memList;
130 $memObject1 = $memoryManager->create($data1);
131 $memObject2 = $memoryManager->create($data2);
132 $memObject3 = $memoryManager->create($data3);
136 $memList[] = $memObject3;
140 unset($memObject2); // $memObject2 はここで破棄されます
143 // $memObject1 はここで破棄されますが、
144 // $memObject3 オブジェクトはまだ $memList に参照されており、
151 これは、移動可能なオブジェクトとロックされたオブジェクトの
159 <sect2 id="zend.memory.memory-manager.settings">
161 <title>メモリオブジェクトの設定</title>
163 <sect3 id="zend.memory.memory-manager.settings.memory-limit">
165 <title>メモリの制限</title>
168 メモリの制限とは、移動可能なオブジェクトを読み込む際に
173 オブジェクトを読み込んだり作成したりすることで
175 メモリマネージャは他のオブジェクトのどれかをスワップします。
180 <methodname>getMemoryLimit()</methodname> メソッドおよび <methodname>setMemoryLimit($newLimit)</methodname>
182 <programlisting language="php"><![CDATA[
183 $oldLimit = $memoryManager->getMemoryLimit(); // メモリの制限バイト数を取得します
184 $memoryManager->setMemoryLimit($newLimit); // メモリの制限バイト数を設定します
189 メモリの制限に負の値を設定すると、'制限なし' を意味します。
193 デフォルト値は、php.ini の '<code>memory_limit</code>'
194 の値の三分の二となります。もし php.ini で
195 '<code>memory_limit</code>' が設定されていない場合は、デフォルト値は
201 <sect3 id="zend.memory.memory-manager.settings.min-size">
203 <title>MinSize</title>
206 MinSize は、メモリマネージャがスワップの対象とするメモリオブジェクトの最小サイズです。
207 メモリマネージャは、この値より小さなサイズのオブジェクトはスワップしません。
208 これにより、スワップや読み込みの回数が莫大なものになることを防ぎます。
213 <methodname>getMinSize()</methodname> メソッドおよび <methodname>setMinSize($newSize)</methodname>
215 <programlisting language="php"><![CDATA[
216 $oldMinSize = $memoryManager->getMinSize(); // MinSize をバイト数で取得します
217 $memoryManager->setMinSize($newSize); // MinSize をバイト数で設定します
222 デフォルト値は 16KB (16384 バイト) です。