>  기사  >  백엔드 개발  >  PHP의 가비지 수집 메커니즘은 무엇입니까?

PHP의 가비지 수집 메커니즘은 무엇입니까?

巴扎黑
巴扎黑원래의
2016-11-08 10:55:17943검색

설명: PHP는 참조 계산(가비지 수집) 메커니즘을 사용합니다. 각 객체에는 참조 카운터가 포함되어 있습니다. 참조가 객체에 연결될 때마다 카운터는 1씩 증가합니다. 참조가 생성된 공간을 벗어나면 또는 NULL이면 카운터가 1씩 감소합니다. 개체의 참조 카운터가 0에 도달하면 PHP 엔진은 이 개체가 더 이상 필요하지 않다는 것을 알고 개체가 차지하는 메모리 공간을 해제합니다.

& 연산은 포인터인가요?

아니요, & 작업은 포인터가 아닌 참조 포인터를 설정합니다. PHP에는 포인터 개념이 없습니다. UNIX 파일 소프트 링크와 유사합니다.

Unset() 연산과 null 값 할당 연산의 차이점은 무엇인가요?

(a) Unset()은 원래 가리킨 메모리에 대한 이 변수의 참조 연결을 끊고 변수 자체를 정의되지 않은 Null 참조로 만들고 기호 테이블에서 해당 메모리의 참조 카운트를 1씩 감소시킵니다. 이며 이 메모리를 가리키는 다른 변수에는 영향을 미치지 않습니다. 따라서 이 unset() 변수를 호출하면 알림이 발행됩니다. (변수를 처음으로 설정하지 않은 경우에만 여러 번 작동합니다.)

(b) null 할당 작업은 변수가 가리키는 메모리의 참조 횟수를 0으로 직접 설정합니다. 해당 블록의 메모리는 엔진에 의해 자연스럽게 회수되며, 언제 다시 사용될지는 알 수 없습니다. 다른 정보를 저장하는 데 즉시 사용될 수도 있고, 다시는 사용되지 않을 수도 있습니다. 그러나 무슨 일이 있어도 원래 해당 메모리를 가리키는 모든 변수는 더 이상 회수된 메모리에서 작동할 수 없으며 이를 호출하려는 모든 변수는 null을 반환합니다.

심볼 테이블에 있는 메모리의 참조 횟수가 0인 경우에만 PHP 엔진이 이 메모리를 회수합니다.

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