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