【问题标题】:memory allocation issue - PHP内存分配问题 - PHP
【发布时间】:2010-12-11 19:36:58
【问题描述】:

我遇到了非常奇怪的问题:

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

我了解该错误,但是我正在跟踪脚本的所有内存分配,但它没有超过:总共 2883584。

触发致命错误之前的行实际内存使用量为 2883584。如上述错误中所述,脚本试图仅分配额外的 21748,但无论如何加起来都不会达到 134217728。

你知道为什么会这样吗?

附: 对于我正在使用的内存分配使用:memory_get_usage(true) 函数。

【问题讨论】:

  • 检查是否存在无限循环。
  • 另外,值得一提的是我在 cli 中作为 shell 脚本运行它
  • 没有无限循环,检查一下
  • 显示一些代码,或者至少命名引发此错误的函数会有所帮助;)
  • 既然在cli上运行,有什么理由不增加更大的内存?

标签: php memory-leaks memory-management


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    好的,所以我想我已经找到了问题所在。事实证明,如果有硬图像来处理 GD2 分配内存,但你在 memory_get_usage 和 get_peak 中看不到它,那么很蹩脚但是......

    【讨论】:

      猜你喜欢
      • 2011-01-07
      • 2011-03-18
      • 2021-05-04
      • 2021-06-30
      • 2011-05-17
      • 1970-01-01
      相关资源
      最近更新 更多