php5.2.0ではメモリ管理が大幅に改善され、場合によってはメモリが解放されない問題は解消されました。
PHP スクリプト (mem.php) をテストするには、echo N>> と sleep を使用して、ステータスを検出するためにスクリプトが特定の段階で一時停止するように制御します。
コードをコピーします コードは次のとおりです:
echo '1>>';
$o = array(); i=0;
cho '3> > ' php スクリプト名):
while true;do clear;ps au|grep -v "(vi|grep)"|grep "(mem|RSS)";完了;
以下は $/usr/local /bin/php mem.php このプロセスは 3 つの状態 (配列作成前、配列作成後、配列破棄後) で、PHP 5.1.6 と 5.2.0 を使用しています (私は使用しました)同じ設定パラメータ) を使用して、RSS (メモリ使用量の値、単位 KB) の結果をテストします。 .Php5.1.6:
3164
18076
17572
Php5.2.0:
4088
14400
4424
UNSET 配列の後、メモリはプロセスから解放されていないことがわかります。この php プロセスでは引き続き再利用できますが、システム内の他のプロセスでは使用できません。そして、5.2.0 ではメモリが大幅に解放されます。
また、最初は 5.2.0 のメモリ使用量が 5.1.6 よりも数 KB 多かったことがわかりますが、これは 5.2.0 にいくつかの新しい機能が追加されたためであり、これは正常です。
さらに、php5.2.0のメモリ割り当ても大幅に改善されており、公式の発表では、emalloc()が呼び出されるたびにmemory_limitの検出が、から要求されたメモリデータブロック(ブロック)を直接検出するように変更されました。システム。もっと詳しく知りたい友達は、自分でコードを勉強することができます。メモリ割り当ての実装が変更されたため、memory_limit でメモリ制御をより正確に制御できるようになりました。つまり、以前の PHP コードで、エラーなしでメモリ使用量がmemory_limit を超えた場合、PHP5.2.0 レポートに含まれる可能性があります。エラー。この改善のバランスをとるために、PHP5.2.0 のデフォルトのmemory_limit は以前の 8MB から 16MB に変更されました (find . -name *c -type f |xargs cat |grep memory_limit)。
http://www.bkjia.com/PHPjc/317766.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/317766.html
技術記事
php5.2.0ではメモリ管理が大幅に改善され、場合によってはメモリが解放されない問題は解消されました。 PHP スクリプト (mem.php) をテストし、echoN と sleep を使用して、スクリプトが特定の段階で一時停止するように制御します...