【发布时间】:2013-12-29 22:26:34
【问题描述】:
我目前正在使用memory_get_usage 函数来确定我的PHP 脚本使用了多少内存。但是,我想根据 PHP 可用的内存总量显示内存使用值。
如何获取 PHP 可用的内存总量?
【问题讨论】:
标签: php memory-management
我目前正在使用memory_get_usage 函数来确定我的PHP 脚本使用了多少内存。但是,我想根据 PHP 可用的内存总量显示内存使用值。
如何获取 PHP 可用的内存总量?
【问题讨论】:
标签: php memory-management
【讨论】:
memory_limit >= 100M),那么使用的总内存将是 800MB。
memory_limit 设置为-1 意味着无限... 那么您无法使用此解决方案。
存在一个问题,使用 ini_get 时,您只能从 php.ini 获取字符串(例如 500 或 500M 或 1G 等)。
如果您需要以字节为单位的实际值,您可以使用这个简单的开源工具:https://github.com/BrandEmbassy/php-memory
然后您可以这样做:$limitProvider->getLimitInBytes();,该库会自动为您转换所有有效值。
【讨论】:
也许这个问题并不完全准确。因为分配和释放不同的内存区域会导致类似拼凑的内存分配,所以问题可能不是你想问的。
例如,您从 6 兆字节的空闲 RAM 开始,每兆字节的空闲 RAM 由 F 表示:
FFFFFF
并分配三次 1MB,第一次分配给$a,第二次分配给$b,第三次分配给$c,然后你就得到了这张地图:
abcFFF
在此之后,您可以释放分配给$b 的第二兆字节,例如,您从一个函数返回,其中$b 是一个局部变量。现在地图是这样的:
aFcFFF
现在你有 4 兆字节的空闲内存,你可以分配 4 倍 1 兆字节,但你只能在一个块中分配 3 兆字节。
那么,你真正的问题是哪一个:
第一个问题的答案是 3 MB,第二个问题的答案是 4。
【讨论】: