php内存泄漏

内存泄漏指的是在程序运行过程中申请了内存,但是在使用完成后没有及时释放的现象

内存泄漏的debug及工具

内存泄漏的程序通常很容易发现,因为症状都表现为内存占用的持续增长,在发现内存持续增长后我们需要判断是什么导致了内存泄漏,这时往往需要借助一些工具来帮助追查,我们可以用到两个工具:PHP内置内存泄漏探测及valgrind内存泄漏分析。

PHP内置内存泄漏探测

PHP本身有自己的内存管理,如果发现PHP有内存泄漏,可以尝试重新编译一个PHP,将编译选项--enable-debug打开(同时所有的扩展也同样需要编译成支持debug模式的):./configure --enable-debug,这样重新编译后,如果PHP探测到有内存泄漏发生则会往标准错误输出打印错误信息。这样我们可以快速的发现问题。

在开启debug模式下,PHP中会有一个函数leak()可以用于触发内存泄漏,这个函数什么都不做,只是申请一块内存但不释放

valgrind辅助法

valgrind是一个动态分析工具构建框架,可以用来分析程序的内存、线程等问题探测,程序性能分析等。具体的功能见官网,这是非常值得尝试的工具。这里要使用的就是valgrind的内存错误分析工具。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。