什么"(试图分配16777216字节)"意思?

时间:2014-04-18 11:40:54

标签: php memory-management runtime-error

我真的需要一些帮助。我的PHP程序(它有点大,所以我不能在这里显示所有这些)错误与

  

致命错误:第81行的/path/program.php中允许的内存大小为67108864字节(尝试分配16777216字节)

这听起来像是面值的有效错误,但我试图做

$error = new message();

在第81行,消息定义为

class message {
  public $pos = -1;
  public $severity = 0;
  public $msg = "";
}

为什么会导致分配16777216个字节?我究竟做错了什么?如何将内存使用量保持在理智的水平?

我确实尝试过搜索,但我发现的关于大量内存分配的唯一文章来自实际上试图分配如此大块的人!所以这没什么帮助。

编辑:发现我的程序中有一个错误导致无限数量的消息被创建。问题仍然没有得到解答,为什么它会尝试分配16777216个字节,而一个消息只占用184个字节?即使对相关问题的许多答案都没有解决这个问题。

1 个答案:

答案 0 :(得分:0)

可以想象,当PHP尝试使用比可用内存更多的内存时,会出现此错误消息。我假设更改代码不是一个选项,但你可以增加PHP可用的内存量。

要更改某个特定脚本的内存限制,请在脚本顶部添加如下所示的行:

ini_set("memory_limit","124M");

或在php.ini中 你可以使用:

memory_limit = 124M

希望这有帮助