数码资讯
PHP对象递归引用导致内存泄漏分析
一般来说,如果PHP对象有递归引用,就会发生内存泄漏。让我们从bug开始。示例代码如下所示: < PHP 类Foo { 功能__construct(){ 这个新的栏位($这个); } } 类酒吧{ 功能__construct($ Foo){ $; } } ($ i = 0;$ i < 100;$ +
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
一般来说,如果PHP对象有递归引用,就会发生内存泄漏。让我们从bug开始。示例代码如下所示:
< PHP
类Foo {
功能__construct(){
这个新的栏位($这个);
}
}
类酒吧{
功能__construct($ Foo){
$;
}
}
($ i = 0;$ i < 100;$ + +){
$ obj =新foo();
unset($ obj);
回声memory_get_usage(), / ;
}
>
当你运行的代码,你会发现内存的使用应该是相同的,但它实际上是增加的,而不完全不起作用。
许多开发都基于框架。应用程序中存在复杂的对象关系。所以这很可能发生。
< PHP
类Foo {
功能__construct(){
这个新的栏位($这个);
}
Function __destruct () {
unset(美元->酒吧);
}
}
类酒吧{
功能__construct($ Foo){
$;
}
}
($ i = 0;$ i < 100;$ + +){
$ obj =新foo();
$ obj -> __destruct();
unset($ obj);
回声memory_get_usage(), / ;
}
>
这是一个有点丑,但它是所有关于过去。幸运的是,这个bug已经被固定在PHP5.3 CVS代码。
在这种情况下,要注意PHP程序的设计,相信对PHP程序设计有一定的参考价值。
< PHP
类Foo {
功能__construct(){
这个新的栏位($这个);
}
}
类酒吧{
功能__construct($ Foo){
$;
}
}
($ i = 0;$ i < 100;$ + +){
$ obj =新foo();
unset($ obj);
回声memory_get_usage(), / ;
}
>
当你运行的代码,你会发现内存的使用应该是相同的,但它实际上是增加的,而不完全不起作用。
许多开发都基于框架。应用程序中存在复杂的对象关系。所以这很可能发生。
< PHP
类Foo {
功能__construct(){
这个新的栏位($这个);
}
Function __destruct () {
unset(美元->酒吧);
}
}
类酒吧{
功能__construct($ Foo){
$;
}
}
($ i = 0;$ i < 100;$ + +){
$ obj =新foo();
$ obj -> __destruct();
unset($ obj);
回声memory_get_usage(), / ;
}
>
这是一个有点丑,但它是所有关于过去。幸运的是,这个bug已经被固定在PHP5.3 CVS代码。
在这种情况下,要注意PHP程序的设计,相信对PHP程序设计有一定的参考价值。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。