【发布时间】:2013-03-06 11:56:11
【问题描述】:
我正在使用实体存储库创建查询,它似乎存在内存泄漏。
在我的实体存储库类中:
echo 'mem 1 : ' . (memory_get_usage()/1024/1024) . "<br />\n";
$query = $this->createQueryBuilder('a')->select('a','b','c','...');
echo 'mem 2 : ' . (memory_get_usage()/1024/1024) . "<br />\n";
$r = $query->getQuery()->getResult();
echo 'mem 3 : ' . (memory_get_usage()/1024/1024) . "<br />\n";
$this->clear(true);
$query->getQuery()->free(true);
unset($r);
echo 'mem 4 : ' . (memory_get_usage()/1024/1024) . "<br />\n";
输出:
内存 1:5.0805282592773
内存 2:5.0998611450195
内存 3:91.49528503418
内存 4:77.939567565918
为什么释放内存后内存没有恢复到初始大小(5 MB)?
而且只能从 91 传到 77。
【问题讨论】:
-
如果你也调用 unset($query) 怎么办?
-
刚刚在另一个 unset 旁边添加了 unset($query) :$this->clear(true); $query->getQuery()->free(true);未设置($查询);未设置($r);但它是一样的:mem 4:77.849983215332
-
结果如何?
-
相同:mem 4:77.849983215332
-
我认为这与在调试模式下启用 sqllogger stackoverflow.com/a/10913115/842075 有关
标签: php memory symfony doctrine