Symfony 2 Doctrine内存使用情况

时间:2013-03-06 11:56:12

标签: php memory symfony doctrine

我正在使用实体存储库创建一个查询,它似乎有内存泄漏。

在我的Entity存储库类中:

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";

Outpout:

  

mem 1:5.0805282592773
  记忆2:5.0998611450195
  记忆3:91.49528503418
  记忆4:77.939567565918

释放内存后,为什么内存没有恢复到初始大小(5MB)? 并且只从91到77。

1 个答案:

答案 0 :(得分:3)

Doctrine缓存已加载的实体的某些方面。使用

$em->clear(); 

从当前实体管理器中分离所有对象。