通过 PHP memory_get_usage() 函数获取当前进程占用的物理内存,比较得出:
1、unset() 函数可以释放内存
2、函数内部的局部变量在函数执行完成会自动释放
看下面的代码:
<?php
echo __LINE__ . ' ' . memory_get_usage() . "\n"; // 36640
function a () {
$a = str_repeat("Hello", 4242);
echo __LINE__ . ' ' . memory_get_usage() . "\n"; // 36640
unset($a);
echo __LINE__ . ' ' . memory_get_usage() . "\n"; // 36640
}
a();
echo __LINE__ . ' ' . memory_get_usage() . "\n"; // 36640
#unset($a);
#echo memory_get_usage() . "\n"; // 36744
结果:
2 --355056
6-- 379664
10-- 355088
14 --355088
第一列是行号
结论
在明显的地方可以使用 unset() 函数显示的回收内存,在功能复杂的场景下可以采用函数形式回收内存