memory_get_usage() 获取当前脚本执行到该位置时已分配的内存量(字节),不能直接追踪单个函数内存占用,但可通过调用前后差值估算增量,配合 gc_collect_cycles() 和多次取平均可提升精度。

memory_get_usage() 不是用来查看“某个函数”的内存占用,而是获取当前 PHP 脚本**执行到该位置时已分配的内存量**(单位:字节)。它不能直接追踪单个函数的内存开销,但可以配合前后快照来估算函数执行过程中的内存增量。
基本用法:获取当前内存使用量
直接调用即可返回当前脚本占用的内存字节数:
<?php<br> echo memory_get_usage(); // 输出类似 352456<br>?>
估算函数内存消耗(常用技巧)
在函数调用前后分别调用 memory_get_usage(),相减得到近似增量:
立即学习“PHP免费学习笔记(深入)”;
<?php<br> $before = memory_get_usage();<br> largeArrayOperation(); // 你的目标函数<br> $after = memory_get_usage();<br> echo "函数约占用:" . ($after - $before) . " 字节";<br><br> function largeArrayOperation() {<br> $arr = array_fill(0, 100000, 'data');<br> unset($arr); // 及时释放可影响结果<br> }<br>?>- 注意:PHP 的内存管理有延迟释放机制,
unset()后不一定立刻回收,所以结果是“近似值” - 建议加
gc_collect_cycles()强制垃圾回收一次,让估算更准(尤其处理大量对象时) - 多次运行取平均值可减少偶然误差
memory_get_usage() 的参数说明
它接受一个可选布尔参数:
-
memory_get_usage()或memory_get_usage(false):返回当前已分配给 PHP 的内存(含未释放的) -
memory_get_usage(true):返回从系统实际申请的内存总量(即内存池大小,通常 ≥ 上者)
日常估算函数开销,用默认参数(false)即可。
更准确的替代方案(进阶)
若需真正分析函数级内存行为,推荐组合使用:
-
xdebug_memory_usage()(需启用 Xdebug):支持函数调用栈级别的内存快照 -
memory_get_peak_usage():查看脚本执行至今的内存峰值,适合判断整体压力 - PHP 8.0+ 可结合
debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS)做轻量埋点
单纯靠 memory_get_usage() 手动夹逼,适合快速验证、简单脚本调试,不适用于复杂对象生命周期分析。



















