Mic*_*ozd 12 php memory-leaks unset
我有两个简单的问题.什么是更好/有用的内存清理.
$var = null;
Run Code Online (Sandbox Code Playgroud)
要么
unset($var);
Run Code Online (Sandbox Code Playgroud)
我有一个循环的功能.我得到了(几分钟后)
Fatal error: Allowed memory size of 419430400 bytes exhausted
Run Code Online (Sandbox Code Playgroud)
我设置null并取消设置() - 每个对象(在循环结束时)但仍然没有任何成功:(我无法找出消耗内存的东西.
那么循环中的函数调用呢?PHP会在这些函数中释放所有分配吗?(通话后)
PHP本身有时会混淆这两个概念,但一般来说,设置为NULL的变量与不存在的变量不同:
<?php
$foo = 'One';
$bar = 'Two';
$foo = NULL;
unset($bar);
var_dump($foo); // NULL
var_dump($bar); // Notice: Undefined variable: bar
var_dump(get_defined_vars()); // Only foo shows up: ["foo"]=> NULL
?>
Run Code Online (Sandbox Code Playgroud)
我发现问题了。
首先,它是由xdebug分析工具引起的(我已经打开了所有东西:)) - 并且它消耗了大量内存。
所以请记住:xdebug(当打开分析时)会消耗应用程序的 PHP 进程中的一些内存
其次,我没有释放被调用函数中使用的静态成员。