我在 PHP 中有一个长时间运行的操作,它总是因内存不足而崩溃。
所以我开始记录内存使用情况:
$result = memory_get_usage() / 1024;
echo $result;
通过注释部分代码,我找到了“有罪”的代码,负责吃掉我所有的 ram。
这是代码:
static private function from_camel_case($str)
{
$str[0] = strtolower($str[0]);
$func = create_function('$c', 'return "_" . strtolower($c[1]);');
$result = preg_replace_callback('/([A-Z])/', $func, $str);
return $result;
}
它基本上将驼峰式的文本转换为带下划线的小写。
为什么会这样泄漏?
我在 Mac OS X Lion 上的 MAMP 中运行 PHP 5.3.5