- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
如果 real_usage
参数设置为 true
,PHP DOCS 说它将获得系统分配的实际内存大小。如果是false
会得到emalloc()
这两个选项中的哪一个返回最大值。相对于 php.ini 中的内存限制值分配的内存?
我想知道脚本有多接近该限制。
最佳答案
好的,让我们用一个简单的脚本来测试一下:
ini_set('memory_limit', '1M');
$x = '';
while(true) {
echo "not real: ".(memory_get_peak_usage(false)/1024/1024)." MiB\n";
echo "real: ".(memory_get_peak_usage(true)/1024/1024)." MiB\n\n";
$x .= str_repeat(' ', 1024*25); //store 25kb more to string
}
输出:
not real: 0.73469543457031 MiB
real: 0.75 MiB
not real: 0.75910949707031 MiB
real: 1 MiB
...
not real: 0.95442199707031 MiB
real: 1 MiB
not real: 0.97883605957031 MiB
real: 1 MiB
PHP Fatal error: Allowed memory size of 1048576 bytes exhausted (tried to allocate 793601 bytes) in /home/niko/test.php on line 7
似乎真正的使用是从系统分配的内存 - 这似乎分配在比脚本当前需要的更大的存储桶中。 (我猜是出于性能原因)。这也是php进程使用的内存。
$real_usage = false
使用量是您在脚本中实际使用的内存使用量,而不是 Zend 内存管理器分配的实际内存量。
阅读 this question了解更多信息。
简而言之:要了解您离内存限制有多近,请使用 $real_usage = true
关于php - memory_get_peak_usage() 与 "real usage",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15745385/
这个问题在这里已经有了答案: PHP: memory_get_peak_usage(false), when should i use true? (2 个答案) memory_get_peak_u
http://php.net/manual/de/function.memory-get-peak-usage.php指出默认情况下将返回 emalloc()(用 C++ 编写的内存管理器)的值。 什
假设我调用 memory_get_peak_usage(true) 并返回 2.5MB。 这是否意味着整个 php(所有客户端)导致了峰值? 或者这是否意味着如果我有 100 个客户端同时访问,峰值可
在 PHP 中有一个函数 memory_get_peak_usage 可以返回当前 php 进程使用的峰值内存。 我想知道它是否还包括由 php 进程触发的 mysql 查询消耗的内存? 最佳答案 I
在我的服务器上出现以下错误: Allowed memory size of 268435456 bytes exhausted 这发生在一个循环中(一个 foreach 循环),当我使用 检查循环中的
如果 real_usage 参数设置为 true,PHP DOCS 说它将获得系统分配的实际内存大小。如果是false会得到emalloc()报告的内存 这两个选项中的哪一个返回最大值。相对于 php
为什么 php memory_get_peak_usage 的结果与在 Linux 中使用“top”或“ps”命令时显示为分配给进程的内存大小差异如此之大? 我在 php.ini 中设置了 2 Mb
我最近遇到了内存分配问题,所以我开始尝试使用 ini_set('memory_limit', value); 指令,尝试以增量方式输入值。现在,通过网络(和 SO)搜索我发现我可以将 -1 作为 va
我是一名优秀的程序员,十分优秀!