有人可以澄清$real_usage
的{{1}}参数的确切差异吗?
manual州:
将此值设置为TRUE以获取从系统分配的实际内存大小。 如果未设置或FALSE,则仅报告emalloc()使用的内存。
但有什么区别?
哪个值与memory_get_usage()
INI设置相比?
对于一些长时间运行的脚本,我得到了250MB的实际使用率,只有50MB的emalloc使用率。怎么可能?
我正在尝试分析一些内存泄漏问题,memory_limit
对我来说是一个重要的指标,我需要完全理解。感谢。
答案 0 :(得分:8)
实际内存是为PHP进程保留的内存量。 PHP以大块的形式保留内存,这将是< = memory_limit,并且可能在脚本执行期间增加。例如。如果它填满了一个块,然后你尝试分配一个新的变量,它将保留另一个块。
如果将参数设置为FALSE,则它仅报告PHP在保留内存中实际使用的内存量。每次分配给新变量或调用函数等时,这都会增加。
如果您对实际使用的内存量感兴趣,那么您将需要真正的内存。
如果您正在调试或尝试调整一段代码,您可能会对emalloc()内存更感兴趣。这将允许您在赋值或函数调用之前和之后检查内存并计算增量。