PHP进程可与默认的1.28m内存一起工作,但是当内存增加到150m时失败



我们有一个基于类的PHP脚本,该脚本在多个长度为475K的多个字符串上运行。该字符串以30k元素的数组爆炸。

现在,当我使用默认内存限制(PHP CLI)运行脚本时,该过程的工作正常,但是当我尝试将内存限制提高到150m时,它会在线路上爆炸字符串到数组的"分配内存耗尽"的错误。。根据错误,爆炸函数本身会在脚本失败时试图分配另外158M内存。

我们尝试在"顶部"下观看记忆使用率,当使用128m垃圾收集触发约120m的垃圾收集,将内存使用率拉到94m。当将内存限制更改为150m垃圾收集时,根本不会触发,或者至少在" Top"中不可见。

PHP为什么这样表现的任何想法。我知道我可以按默认限制进行操作,但是知道这背后的原因会有所帮助。

系统:Mac OS Sierra
PHP:7.0.14

您可以尝试分配256m而不是150m吗?

由于150m不是边界块值,128m-> 256m-> 512m-> etc。

问题仍会发生吗?

最新更新