6

PHP手册说:

int memory_get_peak_usage ([ bool $real_usage = false ] )

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

参数

real_usage

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

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

StackOverflow 上的这个问题提出了同样的问题,但唯一的答案并没有深入探讨如何完成计算的细节,除了将一些分配四舍五入到下一个千字节。

FALSE关于使用and时引擎盖下发生的事情的任何更广泛的答案TRUE

4

1 回答 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

于 2013-09-19T16:05:54.990 回答