Symfony 单元测试和过多的内存泄漏?

Posted

技术标签:

【中文标题】Symfony 单元测试和过多的内存泄漏?【英文标题】:Symfony Unit Testing and Excessive Memory Leaks? 【发布时间】:2011-04-07 03:42:47 【问题描述】:

当使用 Symfony 1.x 进行单元测试时,我们目前遇到了内存泄漏问题,相当数量的测试消耗了 512MB 内存。

目前我们已经尝试过:

使用 phpunit 插件 使用石灰 将测试限制为几个 sfPropelData 负载 + 重复几次功能测试 切换到 PHP 5.3.3 来处理循环引用 检查内存使用 xdebug 并没有提供太多洞察

很快我们就会尝试:

仅功能测试 替换 sfPropelData 代替加载普通 SQL 文件 只有没有任何 ORM 调用的功能测试 Valgrind?

我在想可能是 symfony 中的静态变量没有得到清理,或者 PDO 层本身正在泄漏内存。当然,最后一个选择是想办法在自己的进程中运行一套测试。

我们正在通过可能的领域取得进展,我不希望任何人真正帮助我们解决细节,但我只是提出这个问题,看看是否有人经历过这种情况以及他们在哪里找到的泄漏或他们为解决此问题所做的工作。

另外,对其他可以提供帮助的工具(例如 valgrind)有什么意见吗?

【问题讨论】:

【参考方案1】:

只有没有任何 ORM 调用的功能测试

这是我一直试图阻止的:使用 Mock-Objects 而不是访问数据库。

您可以尝试的是新的 PHPUnit-Version,它具有测试的进程隔离(通过额外的命令行参数激活)。那应该对你有帮助。它速度较慢,但​​有助于解决内存问题

【讨论】:

感谢您的回答和有关进程隔离的提示。

以上是关于Symfony 单元测试和过多的内存泄漏?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以分析单元测试的内存使用情况?

移动端专项测试-内存泄漏

控制器的单元测试(Symfony)

单元测试 Symfony2

通过单元测试访问 Symfony 2 容器?

谷歌模拟全局模拟对象内存泄漏