PHP memory_get_usage(false)vs memory_get_usage(true)

时间:2013-07-10 09:06:13

标签: php memory-leaks

有人可以澄清$real_usage的{​​{1}}参数的确切差异吗?

manual州:

  

将此值设置为TRUE以获取从系统分配的实际内存大小。   如果未设置或FALSE,则仅报告emalloc()使用的内存。

但有什么区别? 哪个值与memory_get_usage() INI设置相比

对于一些长时间运行的脚本,我得到了250MB的实际使用率,只有50MB的emalloc使用率。怎么可能?

我正在尝试分析一些内存泄漏问题,memory_limit对我来说是一个重要的指标,我需要完全理解。感谢。

1 个答案:

答案 0 :(得分:8)

实际内存是为PHP进程保留的内存量。 PHP以大块的形式保留内存,这将是< = memory_limit,并且可能在脚本执行期间增加。例如。如果它填满了一个块,然后你尝试分配一个新的变量,它将保留另一个块。

如果将参数设置为FALSE,则它仅报告PHP在保留内存中实际使用的内存量。每次分配给新变量或调用函数等时,这都会增加。

如果您对实际使用的内存量感兴趣,那么您将需要真正的内存。

如果您正在调试或尝试调整一段代码,您可能会对emalloc()内存更感兴趣。这将允许您在赋值或函数调用之前和之后检查内存并计算增量。