ホームページ >バックエンド開発 >PHPチュートリアル >メモリ取得の質問
ヘルプ、memory_get_usage の質問
echomemory_get_usage();
for($ii=0; $ii
$c[] = 配列('A'=>12);
}
echo("n");
echomemory_get_usage();
?>
出力結果
---------- php を実行 ----------
58088
294872
出力完了(0秒かかった) - 正常終了
変数がないのにメモリを占有するのはなぜですか?ありがとうございます
-----解決策---------$c[] = array ('A'=>12);
$cって変数じゃないの?
------解決策------------------
はい、プログラムはメモリを使用する必要はありません。
------解決策----------------------
php プロセスの起動にも emalloc メモリが必要です。
------解決策--------
これらの値が正しいかどうかについては、あまり心配しないでください。数値も正確です...
-----解決策---------------------- --------
php について メモリ管理については、Laruence のポッドキャストを見ることをお勧めします:
http://www.laruence.com/2011/03/04/1894.html
読めば分かると思います。
PHP のメモリ管理は思っているほど単純ではありません。実際、ロードする拡張機能や PHP 独自の定義済みグローバル シンボル テーブルなどはメモリを占有します。また、PHP は C 言語の malloc とは異なり、変数を定義すると必ず OS に取りに行き、設定が解除されるとすぐに解放されます。正確に 1 バイトを返します。特に配列を使用する場合、メモリの割り当てと解放の際にさらに奇妙な問題が発生します。
C 言語では、要素数が不確かな配列を定義する場合、最初に推定サイズを malloc しますが、配列が事前に適用されたサイズよりも大きくなったら、再度 malloc します。 php ではこれらすべてを自動的に実行し、中間処理が暗黙的に行われるため、memory_get_usage を使用して確認すると、思っているものと異なることがわかります。