설명: PHP는 참조 계산(가비지 수집) 메커니즘을 사용합니다. 각 객체에는 참조 카운터가 포함되어 있습니다. 참조가 객체에 연결될 때마다 카운터는 1씩 증가합니다. 참조가 생성된 공간을 벗어나면 또는 NULL이면 카운터가 1씩 감소합니다. 개체의 참조 카운터가 0에 도달하면 PHP 엔진은 이 개체가 더 이상 필요하지 않다는 것을 알고 개체가 차지하는 메모리 공간을 해제합니다.
& 연산은 포인터인가요?
아니요, & 작업은 포인터가 아닌 참조 포인터를 설정합니다. PHP에는 포인터 개념이 없습니다. UNIX 파일 소프트 링크와 유사합니다.
Unset() 연산과 null 값 할당 연산의 차이점은 무엇인가요?
(a) Unset()은 원래 가리킨 메모리에 대한 이 변수의 참조 연결을 끊고 변수 자체를 정의되지 않은 Null 참조로 만들고 기호 테이블에서 해당 메모리의 참조 카운트를 1씩 감소시킵니다. 이며 이 메모리를 가리키는 다른 변수에는 영향을 미치지 않습니다. 따라서 이 unset() 변수를 호출하면 알림이 발행됩니다. (변수를 처음으로 설정하지 않은 경우에만 여러 번 작동합니다.)
(b) null 할당 작업은 변수가 가리키는 메모리의 참조 횟수를 0으로 직접 설정합니다. 해당 블록의 메모리는 엔진에 의해 자연스럽게 회수되며, 언제 다시 사용될지는 알 수 없습니다. 다른 정보를 저장하는 데 즉시 사용될 수도 있고, 다시는 사용되지 않을 수도 있습니다. 그러나 무슨 일이 있어도 원래 해당 메모리를 가리키는 모든 변수는 더 이상 회수된 메모리에서 작동할 수 없으며 이를 호출하려는 모든 변수는 null을 반환합니다.
심볼 테이블에 있는 메모리의 참조 횟수가 0인 경우에만 PHP 엔진이 이 메모리를 회수합니다.