相关疑难解决方法(0)

诊断内存泄漏 - 允许#bytes的内存大小耗尽

我遇到了可怕的错误消息,可能通过艰苦的努力,PHP内存不足:

在第123行的file.php中,####字节的允许内存大小耗尽(尝试分配####字节)

增加限制

如果您知道自己在做什么并希望增加限制,请参阅memory_limit:

ini_set('memory_limit', '16M');
ini_set('memory_limit', -1); // no limit
Run Code Online (Sandbox Code Playgroud)

谨防!你可能只是解决症状而不是问题!

诊断泄漏:

错误消息指向一条带有循环的行,我认为该循环正在泄漏或不必要地累积内存.我memory_get_usage()在每次迭代结束时打印语句,可以看到数字慢慢增长,直到达到极限:

foreach ($users as $user) {
    $task = new Task;
    $task->run($user);
    unset($task); // Free the variable in an attempt to recover memory
    print memory_get_usage(true); // increases over time
}
Run Code Online (Sandbox Code Playgroud)

对于这个问题的目的,让我们假设最坏的面条代码可以想象在全球范围内的某处藏匿在$userTask.

什么工具,PHP技巧或调试巫毒可以帮助我找到并解决问题?

php memory-leaks

94
推荐指数
7
解决办法
9万
查看次数

标签 统计

memory-leaks ×1

php ×1