UnSet () 는 변수를 파괴하는 PHP의 내장 기능입니다. unset ()을 사용한 후 변수를 더 이상 사용할 수 없으며 점유 된 메모리 자원이 해제됩니다. 특히 많은 양의 데이터 또는 복잡한 데이터 구조를 다룰 때, unset () 의 합리적인 사용은 메모리 사용량을 줄이고 메모리 누출을 피할 수 있습니다.
<span><span><span class="hljs-variable">$var</span></span><span> = </span><span><span class="hljs-string">'Hello, world!'</span></span><span>;
</span><span><span class="hljs-keyword">unset</span></span><span>(</span><span><span class="hljs-variable">$var</span></span><span>);
</span></span>위의 예에서는 unset ()을 호출 한 후 변수 $ var가 파괴되고 $ var에 더 이상 액세스 할 수 없습니다.
PHP는 쓰레기 수집 메커니즘을 기반으로 한 언어입니다. 이론적으로 PHP의 쓰레기 수집 메커니즘은 정기적으로 미공개 메모리를 정리합니다. unset ()를 사용하면 변수를 즉시 사용할 수 없어서 차지하는 메모리를 제거합니다. 작은 객체와 간단한 변수의 경우이 작업의 성능 오버 헤드는 일반적으로 낮으며 성능 저하가 상당한 성능 저하를 일으키지 않습니다.
그러나 큰 배열 또는 객체와 같은 복잡한 데이터 구조의 경우 unset ()에게는 고성능 비용이 발생할 수 있습니다. 이는 PHP가 데이터 구조에서 요소를 가로 지르고 관련 참조를 삭제하기 때문에 특히 높은 수의 배열 또는 객체 참조가있을 때 추가 성능 손실로 이어질 수 있기 때문입니다.
PHP는 참조 계산을 사용하여 메모리를 관리합니다. 변수가 여러 번 참조되면 PHP는 참조 수를 증가시킵니다. 변수는 참조 수가 0 일 때만 파괴됩니다. unset ()는 단순히 변수의 참조 수를 줄이고, 다른 곳에 참조가 여전히 존재하는 경우 메모리는 즉시 재활용되지 않습니다. 따라서, unset () 의 사용이 특히 참조 수가 높을 때 항상 자유 메모리를 즉시 자유롭게하지는 않습니다.
<span><span><span class="hljs-variable">$a</span></span><span> = &</span><span><span class="hljs-variable">$b</span></span><span>;
</span><span><span class="hljs-keyword">unset</span></span><span>(</span><span><span class="hljs-variable">$a</span></span><span>); </span><span><span class="hljs-comment">// $b 참조 수는 0이 아닙니다</span></span><span>
</span></span>위의 코드에서는 $ a가 파괴되지만 $ B는 여전히 동일한 메모리 위치를 나타 내기 때문에 메모리는 즉시 재활용되지 않습니다.
Unset () 는 PHP가 제공하는 메모리 관리 도구이지만 Unset () 에 대한 빈번한 호출은 특히 루핑 및 대규모 데이터 작업시 불필요한 성능 오버 헤드를 가져올 수 있습니다. UNSET () 가 루프에서 여러 번 호출되면 PHP가 메모리에서 가변 참조를 자주 확인하게하여 실행 효율에 영향을 미칩니다.
<span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$largeArray</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$key</span></span><span> => </span><span><span class="hljs-variable">$value</span></span><span>) {
</span><span><span class="hljs-keyword">unset</span></span><span>(</span><span><span class="hljs-variable">$largeArray</span></span><span>[</span><span><span class="hljs-variable">$key</span></span><span>]); </span><span><span class="hljs-comment">// 루프에서 자주 전화하십시오 unset()</span></span><span>
}
</span></span>위의 코드는 특히 큰 배열을 처리 할 때 성능 저하를 유발할 수 있습니다. PHP는 배열 구조 및 메모리 관리를 지속적으로 조정해야하기 때문입니다.