memory_get_peak_usage(true)是什么作用?

6

PHP手册中写道:

int memory_get_peak_usage ([ bool $real_usage = false ] )

返回已为您的PHP脚本分配的内存峰值(以字节为单位)。

参数

real_usage

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

那么,emalloc()如何不是真正的使用情况,而TRUE如何计算真正的内存使用情况?

StackOverflow上的这个问题也问了同样的问题,但唯一的答案没有详细说明如何进行计算,除了将一些分配舍入到下一个千字节。

是否有更详细的答案来解释在使用FALSETRUE时发生了什么?


3
查看此处:https://dev59.com/LFfUa4cB1Zd3GeqPLcwz 当使用 memory_get_peak_usage() 函数时,传递参数 true 和不传参数的区别是什么?在什么情况下应该使用 true 参数? - user1578653
@user1578653 确实是重复的,感谢指出。不过如果有更好的答案,将不胜感激。 - BenMorel
这个怎么样?它有一个稍微更有用的答案:https://dev59.com/smUo5IYBdhLWcg3wzSIq - user1578653
1个回答

3

这个问题是重复的,如上所述。

然而,我认为我应该总结一下我从不同的答案和评论中得出的理解:

  • memory_get_peak_usage(false) 返回 PHP 脚本实际使用的精确内存。用于比较 PHP 脚本不同部分的精确内存消耗。
  • memory_get_peak_usage(true) 返回分配给 PHP 脚本的内存来自系统,它总是更高,因为 Zend 引擎以 256KB 的块分配内存。用于了解给定 PHP 脚本对系统的真正影响。

所以基本上,memory_get_peak_usage(true) 应该是 memory_get_peak_usage(false) 向上取整到下一个 256KB


舍入到256?这不是依赖于平台吗? - Pacerier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接