class test { public function __construct() { $start = memory_get_usage(1); runFunctionNeededToCheck(); var_dump(memory_get_usage(1) - $start); } }
但是它只返回0,内存使用量没有增加,而我在这个函数中创建了几十个数组,对象和一些数据库事务。没有real_usage标志,我得到了一些大于0的估值,但我需要这个脚本/函数的内存使用。
你有什么想法吗?或者你知道为什么记忆似乎仍然存在吗?
事先提前修改
我尝试了一下,似乎功能不是问题,但如果你在一个对象中运行这个代码,你就到了我的终点......(抱歉我一开始没有提到它)
培乐多! - 效应
在函数结束时清除所有本地变量。谢谢!
答案 0 :(得分:0)
据我所知,在调用var_dump()
命令之前,您调用的函数将自行清除。
尝试在函数内部放置相同的行,这可能会对此事有所启发。
function runFunctionNeededToCheck()
{
$start = memory_get_usage(1);
//do something here....//
return (memory_get_usage(1) - $start);
}
$memUsage = runFunctionNeededToCheck();
echo $memUsage;
当然,内存使用量是否有任何差异完全取决于函数的作用 - 确保它使用更多内存,尝试打开图像文件或其他内容,以便您知道用法将超过之前。
答案 1 :(得分:0)
嗯它似乎有效:
<?php
class test {
public function __construct() {
$start = memory_get_usage(1);
range(1, 100000);
var_dump(array('start' => $start, 'end' => memory_get_usage(1), 'sub' => memory_get_usage(1) - $start));
}
}
$v = new test();
结果:
array(3) {
["start"]=>
int(786432)
["end"]=>
int(1048576)
["sub"]=>
int(262144)
}
也许你的函数最终没有创建任何新变量或清除它们?