php:memory_get_usage(true)不';增加
有个奇怪的问题。我想检查函数的内存使用情况并使用 class test { public function __construct() { $start = memory_get_usage(1); runFunctionNeededToCheck(); var_dump(memory_get_usage(1) - $start); } } 课堂测试{ 公共函数构造(){ $start=内存获取使用率(1); runfunctionneedtocheck(); 变量转储(内存获取使用率(1)-$start); } } 但是它只返回0,mem的使用率没有增加,而我在这个函数中创建了几十个数组、对象和一些db事务。没有real_usage标志,我得到了一些大于0的赋值,但我只需要这个脚本/函数的内存使用量 你有什么想法吗?或者你知道为什么记忆会持续存在吗 提前thx 编辑 我试过一点,似乎函数不是问题,但是如果你在一个对象中运行这段代码,你就到了我的终点。。。(很抱歉,一开始我没有提到) Doh-效果php:memory_get_usage(true)不';增加,php,memory,Php,Memory,有个奇怪的问题。我想检查函数的内存使用情况并使用 class test { public function __construct() { $start = memory_get_usage(1); runFunctionNeededToCheck(); var_dump(memory_get_usage(1) - $start); } } 课堂测试{ 公共函数构造(){ $start=内存获取使用率(1); run
在函数结束时清除所有局部变量。谢谢 据我所知,在调用
var\u dump()
命令时,您调用的函数本身将被清除
尝试将相同的行放在函数本身中,这可能会对问题有所帮助
function runFunctionNeededToCheck()
{
$start = memory_get_usage(1);
//do something here....//
return (memory_get_usage(1) - $start);
}
$memUsage = runFunctionNeededToCheck();
echo $memUsage;
当然,内存使用是否有任何差异完全取决于函数的功能-为了确保它使用了更多内存,请尝试打开一个图像文件或其他文件,这样您就知道使用的内存将比以前更多。Hmm它可以工作:
<?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();
也许你的函数不会创建任何新变量或最终清除它们?我认为问题是,函数有自己的堆栈,一旦函数完成,这个堆栈就会被清除,因此内存使用量将与以前相同或几乎相同。Thx供你参考。我试过一点,似乎函数不是问题,但是如果你在一个对象中运行这个代码,你就到了我的终点…这可能会对你有更多帮助:是的。。。好的-这是合乎逻辑的。。。在函数结束时清除所有局部变量。谢谢!
array(3) {
["start"]=>
int(786432)
["end"]=>
int(1048576)
["sub"]=>
int(262144)
}