分配给 PHP 的内存量的查看,unset() 对于降低 PHP 脚本实际使用的内存量的分析

1、参考网址:https://www.php.net/manual/zh/function.memory-get-usage.php

2、基于 一个 memory_get_usage() 例子,调整之后,如图1,代码如下:

图1

//这只是个例子,下面的数字取决于你的系统

echo memory_get_usage()/1024/1024 . " MB\n"; // 0.37361145019531 MB

$a = str_repeat("Hello", 424200);

echo memory_get_usage()/1024/1024 . " MB\n"; // 4.3736343383789 MB

unset($a);

echo memory_get_usage()/1024/1024 . " MB\n"; // 0.37361145019531 MB

echo memory_get_peak_usage()/1024/1024 . " MB\n"; // 4.3739242553711 MB

3、执行结果,unset() 对于降低 PHP 脚本实际使用的内存量是有效果的。

0.37361145019531 MB 4.3736343383789 MB 0.37361145019531 MB 4.3739242553711 MB

4、在 Yii 2.0 中,运行同样的代码,查看调试数据的内存占用,其值 Memory 11.356 MB,与 memory_get_peak_usage() – 返回分配给 PHP 内存的峰值一致。如图2

图2

7.3560180664062 MB 11.35604095459 MB 7.3560180664062 MB 11.356330871582 MB

5、重复第 2 步骤,将 real_usage 设置为 TRUE,获取系统分配总的内存尺寸,包括未使用的页。如果未设置或者设置为 FALSE,仅仅报告实际使用的内存量。执行结果,unset() 对于降低 PHP 脚本获取系统分配总的内存尺寸仍然是有效果的。

// 这只是个例子,下面的数字取决于你的系统

echo memory_get_usage(true)/1024/1024 . " MB\n"; // 0.37361145019531 MB

$a = str_repeat("Hello", 424200);

echo memory_get_usage(true)/1024/1024 . " MB\n"; // 4.3736343383789 MB

unset($a);

echo memory_get_usage(true)/1024/1024 . " MB\n"; // 0.37361145019531 MB

echo memory_get_peak_usage(true)/1024/1024 . " MB\n"; // 4.3739242553711 MB
2 MB 6 MB 2 MB 6 MB

 

永夜