メモリ取得の質問

WBOY
WBOYオリジナル
2016-06-13 12:58:431008ブラウズ

ヘルプ、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 を使用して確認すると、思っているものと異なることがわかります。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。