类结构中的PHP内存泄漏


PHP Memory Leak in class structure

希望有人能帮我解决这个问题,有点难倒了。

所以做一些乱七八糟的图像和多边形,但得到一个奇怪的内存泄漏。

我有一个包装类叫做canvas它保存着我的图像资源,另一个叫做polygon它用来管理和操作另一个叫做顶点的类它是x和y坐标数组的容器。

非常直接。

我注意到,我得到一个内存中断错误跟踪到一个方法称为getPoly在画布类,它返回一个多边形的实例,在构造上设置顶点类。

如果你使用这种方法,即使在打乱变量之后,图像资源的内存也不会返回,但如果你用新关键字创建一个多边形的实例并取消设置,那就好了。

canvas类还有另一个叫做destroy的方法,它:

imagedestroy($this->canvas);

所以使用这个:

$img  = new Image_Canvas($width, $height);
$poly = $img->getPoly();
$img->destroy();
//Memory not returned

,

$img  = new Image_Canvas($width, $height);
$poly = new Image_Polygon($width, $height)
$img->destroy();
//Memory is returned
public function getPoly($width= null, $height =null)
{
     if(!is_int($width) || !is_int($height))
     {
        return new Image_Polygon($this->width, $this->height);
     }
     else
     {
        return new Image_Polygon($width, $height);
     }
}  

现在奇怪的是它实际上不是一个图像资源问题,这个问题似乎来自于这样一个事实,即顶点类实现迭代器,如果顶点不实现迭代器,那么内存正常返回的方式。最好让顶点实现Iterator来帮助循环。

任何帮助或以前的经验,这将是伟大的

原来我是一个白痴,有一个明显的错误分配大变量类属性在我的代码,这是导致内存泄漏。

良好的编程0,noobery 1