2012年10月12日
摘要: 上次说到了refcount和is_ref,这里来说说内存泄露的情况$a = array(1, 2, &$a);unset($a);在老的PHP版本中,这里就会出现内存泄露,分析如下:执行第一行,可以知道$a和$a[2]指向的zval refcount=2,is_ref=1然后执行第二行,$a将会从符号表中被删除,同时指向的zval的refcount--,此时refcount=1,因为refcount!=0,故此zval不会被当做垃圾回收,但是此时我们却失去了$a[2]指向这个zval的入口,因此这个zval成了一块内存垃圾同样的道理可以发生在类内部引用里,例如$a = new Man( 阅读全文
posted @ 2012-10-12 15:45 ZimZz 阅读(1000) 评论(0) 推荐(0) 编辑