>백엔드 개발 >PHP 문제 >변수가 PHP에서 메모리를 차지합니까?

변수가 PHP에서 메모리를 차지합니까?

(*-*)浩
(*-*)浩원래의
2019-09-06 09:42:482535검색

변수가 PHP에서 메모리를 차지합니까?

PHP에 데이터를 저장하는 한 가지 방법은 내가 변경할 수 있는 양입니다. 이 방법은 데이터를 저장할 수 있는 메모리에 공간을 열고 이 공간에 이름을 지정하는 것입니다. 변수라고 합니다. 이 값은 작업 중에 변경될 수 있습니다

현재 공간의 이름을 변수 이름으로 하고, 현재 공간에 있는 데이터(8개 데이터 유형)를 변수 값이라고 합니다

예: (추천 학습 : PHP 비디오 튜토리얼)

php 버전은 7.2

<?php
echo memory_get_usage() , &#39;<br>&#39;;
$start = memory_get_usage();
$a = Array();
for ($i=0; $i<1000; $i++) {
$a[$i] = $i + $i;
}
$mid = memory_get_usage();
echo memory_get_usage() , &#39;<br>&#39;;
for ($i=1000; $i<2000; $i++) {
$a[$i] = $i + $i;
}
$end = memory_get_usage();
echo memory_get_usage() , &#39;<br>&#39;;
echo &#39;argv:&#39;, ($mid - $start)/1000 ,&#39;bytes&#39; , &#39;<br>&#39;;
echo &#39;argv:&#39;,($end - $mid)/1000 ,&#39;bytes&#39; , &#39;<br>&#39;;
echo &#39;Memory:&#39;, ($mid - $start)/1024 ,&#39;k&#39; , &#39;<br>&#39;;
echo &#39;Memory:&#39;,($end - $mid)/1024 ,&#39;k&#39; , &#39;<br>&#39;;
输出是:
389336
418056
442632
argv:28.72bytes
argv:24.576bytes
Memory:28.046875k
Memory:24k

현재 PHP 스크립트에 할당된 메모리 양을 바이트 단위로 반환합니다.

1000개의 요소로 구성된 정수 배열에는 28k의 메모리가 필요하며 각 요소는 평균 28바이트를 차지합니다.

memory_get_usage() 반환된 결과는 배열이 모두 차지하지는 않지만 일부 PHP도 포함합니다

자체 실행 할당된 일부 구조의 경우 내장 함수에 의해 생성된 배열이 실제 공간에 더 가까울 수 있습니다.

<?php
$start = memory_get_usage();
$a = array_fill(0, 10000, 1);
$mid = memory_get_usage(); //10k elements array;
echo &#39;argv:&#39;, ($mid - $start )/10000,&#39;byte&#39; , &#39;<br>&#39;;
echo &#39;Memory:&#39;, ($mid - $start)/1024 ,&#39;k&#39; , &#39;<br>&#39;;
$b = array_fill(0, 10000, 1);
$end = memory_get_usage(); //10k elements array;
echo &#39;argv:&#39;, ($end - $mid)/10000 ,&#39;byte&#39; , &#39;<br>&#39;;
echo &#39;Memory:&#39;,($end - $mid)/1024 ,&#39;k&#39; , &#39;<br>&#39;;
得到:
argv:54.5792byte
argv:54.5784byte

argv:39.736byte
Memory:388.046875k
argv:39.736byte
Memory:388.046875k

10,000개 요소의 정수 배열에는 388k의 메모리가 필요한 것으로 대략 이해됩니다. 하나의 배열 요소는 약 39바이트를 차지합니다.

위 내용은 변수가 PHP에서 메모리를 차지합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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