适用于php的体面内存分析工具

Ole*_*sov 0 php memory-leaks memory-management

我使用SendGrid官方PHP库和SMTP API(自动邮件程序在Ubuntu服务器上作为cron作业运行)构建了一个自动邮件程序.

生产服务器上的内存限制设置为32M,但在生产服务器上第一次运行应用程序之一时,我收到了消息

允许的内存大小为33554432字节耗尽,wast尝试分配256478字节

自256478 <33554432以来,这根本没有任何意义,但我怀疑我在某处有内存泄漏.

根据这篇文章,PHP有内存泄漏问题,在处理对象之间的相互关系时,我使用自己的Wrapper类来使代码更具可读性和结构,主要的mailService类,以及每个任务的类,实现一个接口,并返回每封电子邮件的所有特定数据(标题,子值,收件人列表).

我将首先在我的界面和每个类中添加一个析构函数,以确保没有内存泄漏,但我不确定这是否会解决问题,因为根据我执行的内存基准测试,大部分执行时间,内存由SwiftMailer的MailTransport.php类消耗.

所以我的问题基本上,我怎么能在每次迭代时重置这个类的内存使用情况?,是否有内置的东西,或者我应该自己实现这样的方法?

非常感谢任何帮助.

小可视化:在此输入图像描述

Mar*_*ker 5

允许的内存大小为33554432字节耗尽,wast尝试分配256478字节

这意味着PHP正在尝试在脚本运行期间分配额外的 256478以上,而该额外的请求是推动33554432阈值使用的总内存的原因.

早期版本的PHP在遇到对象之间的循环引用时会出现内存问题,尽管这已经改进了5.4 ....是否受影响将取决于您运行的PHP版本以及您的类是否实际包含此类循环引用