>백엔드 개발 >PHP 튜토리얼 >PHP의 소멸자 및 가비지 수집에 대한 자세한 분석

PHP의 소멸자 및 가비지 수집에 대한 자세한 분석

黄舟
黄舟원래의
2017-07-02 10:11:401206검색

Destructor: 객체가 가비지가 되거나 객체가 명시적으로 파괴될 때 실행됩니다.

GC(가비지 수집기)

PHP에서는 이 개체를 가리키는 변수가 없으면 이 개체는 쓰레기가 됩니다. PHP는 메모리에서 이를 파괴합니다. 이는 메모리 오버플로를 방지하기 위한 PHP의 GC(Garbage Collector) 가비지 처리 메커니즘입니다. PHP 스레드가 종료되면 현재 점유된 모든 메모리 공간이 소멸되고 현재 프로그램의 모든 객체도 소멸됩니다.

destruct() 소멸자는 가비지 객체가 재활용될 때 실행됩니다.

소멸자를 명시적으로 호출할 수도 있지만 그렇게 하지 마세요.

소멸자는 시스템에 의해 자동으로 호출됩니다. 프로그램에서 객체의 소멸자를 호출하지 마세요.

소멸자는 매개변수를 취할 수 없습니다.

모든 개체는 프로그램이 끝나기 전에 파괴됩니다. 소멸자가 호출되었습니다.

     <?php    
    class Person{    
       public function destruct() {    
          echo "<br />析构函数在这里执行";    
          echo "<br />这里一般用来放置,关闭数据库,关闭文件等等收尾工作。";    
       }    
    }    
    $p = new Person();    
    for ($i = 0; $i < 5; $i++) {    
       echo "<br /> $i";    
    }  
    //我们在这里看到,在PHP程序结束前,对象被销毁了。    
    ?>

객체를 가리키지 않으면 객체가 소멸됩니다.

    <?php    
    class Person {    
       public function destruct() {    
          echo "<br />析构函数在这里执行";    
          echo "<br />这里一般用来放置,关闭数据库,关闭文件等等收尾工作。";    
       }    
    }    
    $p = new Person();    
    $p = null;    
    //我们在这里看到,析构函数在这里被执行了。    
    for ($i = 0; $i < 5; $i++) {    
       echo "<br /> $i";    
    }    
    ?>

11행에서 $p를 비우거나 $p에 string을 할당하여 $p가 가리키는 개체가 가비지 개체가 되도록 설정했습니다. PHP 쓰레기는 이 객체를 파괴합니다.

unset 변수

    <?php    
    class Person {    
       public function destruct() {    
          echo "<br />析构函数在这里执行<br />";    
       }    
    }    
    $p = new Person();    
    $p1 = $p; //设定新引用变量$p1也指向这个对象    
    unset($p);    
    echo "是否看到/$p被销毁,对象也被销毁呢?";    
    for ($i = 0; $i < 5; $i++) {  
       echo "<br /> $i";    
    }    
    unset($p1);    
    echo "我们看到这里,析构函数被执行了";    
    ?>


참조 변수를 설정 해제하면 unset은 객체가 아닌 객체를 가리키는 변수를 삭제합니다.

위 내용은 PHP의 소멸자 및 가비지 수집에 대한 자세한 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.