스크립트가 실행되는 동안 unset()이 메모리에 영향을 미치는지 테스트하여 unset() 또는 다른 알려진 메서드 인 $ var = null이 더 효율적인 지 확인합니다. unset()은 메모리에 영향을 미쳤지 만, 두 개의 다른 가상 호스트에서 테스트 한 이후에 같은 스크립트에 대해 메모리 양의 두 배나 그보다 더 많은 양을 가져 오는 이유가 궁금했습니다. 나는 대답을 간단히 추측하고있다. 그러나 그것은 순간에 나를 벗어난다. 스크립트 자체는 다음과 같습니다.간단한 PHP unset() 메모리 테스트가 PHP 5.3에서 두 배의 메모리를 사용하는 이유는 무엇입니까?
<?php
$init=memory_get_usage();
$test=array();
for($i=0;$i<=100000;$i++){
$test[$i]=rand(0,10000000);
}
echo 'MEMORY CHANGE: '.((memory_get_usage()-$init)/1024/1024).'MB<br/>';
for($i=0;$i<=100000;$i++){
unset($test[$i]);
}
echo 'MEMORY CHANGE: '.((memory_get_usage()-$init)/1024/1024).'MB<br/>';
//output on PHP 3.2.5 virtualhost:
//MEMORY CHANGE: 6.98558807373MB
//MEMORY CHANGE: 0.500259399414MB
//output on PHP 5.3.5 virtualhost
//MEMORY CHANGE: 13.970664978MB
//MEMORY CHANGE: 1.00063323975MB
?>
고마워요!
루프 사이에서'$ init'을 초기화하지 않아야합니까? –
그리고 memory_get_usage() 대신 memory_get_usage (true)를 사용한다면? –
같은 일이 발생합니다. 3.2.5 : MEMORY 변경 : 7.25MB MEMORY 변경 : 1메가바이트 3.3.5 : MEMORY 변경 : 14.25MB 메모리 변경 : 1.75MB 서버에 대해 뭔가가 있어야하지만, 나도 몰라 무엇을 찾을 것이다. – kingmaple