【发布时间】:2012-09-03 22:39:04
【问题描述】:
我正在使用 codeigniter 和 PHP 来构建一个 Web 应用程序,由于我必须执行大量查询,我必须在模型内部定义/使用很多对象。 有时我必须在循环中多次使用同一个对象,例如:
$dbData = $this->mydb->query($dbQuery);
if($dbData->num_rows() >0 ){ //check if rows were returned
$dbResult = $dbData->result();
foreach( $dbResult as $index => $row){
$dbArray[$row->JOB_NAME_STG] = $row->REC_LOADED;
}
在一般的编程实践中,一旦不再需要对象,您就应该将其无效,但我无法找到确保所有对象无效的最佳方法的任何详细信息,从而避免 codeigniter 或 php 一般的内存泄漏.
在函数末尾给对象赋值 NULL 就足够了吗?
$dbData = $this->mydb->query($dbQuery);
$dbData = NULL;
或者 codeigniter 有更有效的方法来确保没有内存泄漏。
在使用之前是否应该在循环内将对象无效以确保没有内存泄漏?
任何方向的指针将不胜感激。 谢谢!!!
【问题讨论】:
-
“在一般的编程实践中,一旦不再需要对象,你就应该取消它们”——谁告诉你的?这不是真的。
-
我从未取消任何对象。我认为我们不应该这样做
-
我认为你不应该取消指向对象的指针......你应该取消它们。如果您使指针无效,那么指针现在指向值 NULL 并失去对原始内存的引用......从而迫使垃圾收集对其进行排序!至少,您可以按以下顺序执行:
unset( $dbData ); $dbData = NULL;。
标签: php codeigniter memory-management memory-leaks codeigniter-2