运行我的 PHP CLI 脚本时,我的操作系统内存不足,而 memory_get_usage() 返回 40MB 内存使用。
这是此脚本执行的示例。
<?php
$aInstances = array();
$aInstances = myClass::getInstances(); // returns ~ 1500 objects in array()
while ( count($aInstances) ) {
$instance = array_pop($aInstances);
// do some stuff - memory usage increases
$instance->loadFromDb();
......
// free memory
unset($instance);
gc_collect_cycles(); // force garbage collector cleanup (memory usage grows up to 110MB otherwise)
}
// Display Php Memory Usage
echo number_format(memory_get_usage());
// returns 40,320,200
echo number_format(memory_get_peak_usage());
// returns 41,002,056
// Display Php System Memory Usage
echo memory_get_usage(true);
// returns 41,943,040
echo memory_get_peak_usage(true)
// returns 41,943,040
?>
这个脚本似乎完成了他的工作,但是当我尝试通过另一种方式(比如ps aux
在另一个 shell 上)查看系统内存使用情况时,内存使用情况超过 90%。
脚本有一次被系统杀死,因为它内存不足。
更多信息:
- 操作系统:Debian 6、2GB 内存
- PHP版本:5.3.3-7
- php.ini (cli) memory_limit = 128M
你有什么想法来解释和/或解决我的问题吗?
非常感谢...