<?php
ini_set("memory_limit", 20);
echo ini_get("memory_limit");
while(true){
}
如上面,我写了个测试,设置memory限制为20字节。
运行脚本php tt.php
输出设置的内存大小20
查看该进程的进程号
通过进程ID查看该进程占用内存,发现如下:rsz=43964,本人有些迷惑,为什么php设置的最大内存20 但是进程会消耗的内存超过20
求指点一二~不胜感激
<?php
ini_set("memory_limit", 20);
echo ini_get("memory_limit");
while(true){
}
如上面,我写了个测试,设置memory限制为20字节。
运行脚本php tt.php
输出设置的内存大小20
查看该进程的进程号
通过进程ID查看该进程占用内存,发现如下:rsz=43964,本人有些迷惑,为什么php设置的最大内存20 但是进程会消耗的内存超过20
求指点一二~不胜感激
memory_limit = 128M
限制的是PHP脚本占用的内存,PHP进程占用的内存不包括在内.memory_get_usage()
返回分配给PHP脚本的内存,单位是字节,同样不包括PHP进程的内存.memory_get_peak_usage()
返回分配给PHP脚本的内存的峰值.
1 回答4.2k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
2 回答866 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.3k 阅读
1 回答720 阅读✓ 已解决
两个内存肯定是不一样的,memory_limit 设置的是运行内存,举个例子:
当php代码运行到这里的时候,$arr数组的大小会在循环中不断增大,这个时候会向系统申请更多的内存来存储。如果这个arr的大小所占的字节超过这memory_limit,那么就会php报出异常,合理设置可以防止内存溢出。当php整个代码生命周期走完之后,这部分内存会被释放掉,系统内存使用率就会降下来。
还有,进程本身也会占用内存,就像我们平时用浏览器一样,一打开啥也不做,系统也会分配给这个浏览器进程一部分内存,当浏览网页,看视频时候,你会发现浏览器进程的内存会变高,关闭视频的时候会变低。