在平时php-fpm的时候,可能很少人注意php的变量回收,但是到swoole常驻内存开发后,就不得不重视这个了,因为在常驻内存下,如果不了解变量回收机制,可能就会出现内存泄露的问题,本文将一步步带你了解...php的垃圾回收机制,让你写出的代码不再内存泄漏
写时复制
首先,php的变量复制用的是写时复制方式,举个例子. ...而$c并非是引用变量,所以将值复制给了$c,$c引用还是为1
详细引用计数知识,底层原理可查看:https://www.cnblogs.com/sohuhome/p/9800977.html
php生命周期...);
}
a();
echo('exit(2);'.PHP_EOL);
当$a1和$a2的属性互相引用时,unset($a1,$a2) 只能删除变量的引用,却没有真正的删除类的变量,这是为什么呢?...当给变量赋值成功后,类的引用计数为1,同时,a1->ref指向了a2,导致a2类引用计数增加1,同时a1类被a2->ref引用,a1引用计数增加1
当unset时,只会删除类的变量引用,也就是-1,但是该类其实还存在了一次引用