2010-12-11 82 views
0

我有很奇怪的问题:内存分配的问题 - PHP

Fatal error: Allowed memory size of 134217728 bytes exhausted 
(tried to allocate 21748 bytes) 

我的理解是错误但是我跟踪所有的内存分配脚本及其以上没有得到:共2883584。

致命错误被触发前的行实际内存使用量为2883584级别。如上面的错误中所述,脚本正试图分配额外的21748多个,不管怎样总计不会增加到134217728。

任何想法,为什么它那样?

P.S. 用于内存分配的用法我正在使用:memory_get_usage(true)函数。

+0

检查任何无限循环。 – Mchl 2010-12-11 19:38:48

+0

另外,值得一提的是我在cli中运行它作为shell脚本 – Marcin 2010-12-11 19:38:59

+0

没有无限循环,检查 – Marcin 2010-12-11 19:39:15

回答

0

好的,所以我想我已经发现了这个问题。事实证明,如果有难以处理GD2分配内存的图像,但您无法在memory_get_usage和get_peak中看到它,所以相当蹩脚,但...

1

考虑将true传递给memory_get_usage,这将返回分配的系统内存的真实数量(而不仅仅是使用emalloc)。运行时可能指的是终止脚本时使用的系统内存,这可能会高得多(例如通过不是emalloc的值)。