奇妙な現象: 定数作成プロセス
PHP コード
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--><?php
var_dump( memory_get_usage() ); // int(129100)
var_dump( memory_get_usage() ); // int(129156) - 很难理解,这里为什么会有内存增加?
var_dump( memory_get_usage() ); // int(129156)
define('hello', 'WORLD');
var_dump( memory_get_usage() ); // int(129156) - 既然创建了一个常量,就该有内存增加。
$hello = 'WORLD';
var_dump( memory_get_usage() ); // int(129304)
ログイン後にコピー
-----解決策----------- --- -------
これを見てください:
http://www.laruence.com/2011/03/04/1894.html
PHP は C のような低レベル言語とは異なります。PHP 自体は、より高度な言語です。小さなシステムのように
------解決策------------------
私の実行結果は
int(51312)
int(51424)
int(51424)
int(51480)
int(51480)
という議論だと思います。 single ステートメントによって消費されるメモリには意味がありません。メモリ割り当ては実際にはセグメント化されています。つまり、1 バイトのメモリが必要な場合でも、実際の割り当ては、割り当て戦略に応じて 32 バイトまたは 1024 バイトになる場合があります。これは、各割り当てを使用する必要がないためです。変数は通常、1 文字と 1 バイトに基づいておおよそ計算できますが、正確に計算することは困難です。
さらに、var_dump 関数自体が文字列を出力しますが、この文字列にもメモリが必要かどうかは内部実装によって異なります。動作中にメモリが増加する場合と、メモリが変更されない場合があるのはなぜですか? 前回割り当てられた追加メモリが十分であるかどうかの問題が原因です。十分であれば、メモリを増やす必要はありません。足りないので、増やします。