col
Новичок
выделение памяти
Вопросы собственно в комментах.
Если кто знает поделитесь ссылками желательно на русском, как вообще устроенно там всё в нутрЕ.
Помнится Тони высказывался по этой теме но вскользь, хотелось бы более полноценно.
PHP 5.2.5
Windows XP SP2
Вопросы собственно в комментах.
Если кто знает поделитесь ссылками желательно на русском, как вообще устроенно там всё в нутрЕ.
Помнится Тони высказывался по этой теме но вскользь, хотелось бы более полноценно.
PHP 5.2.5
Windows XP SP2
PHP:
<?
$s = str_pad('', 1033999 );
echo "mc1=".(memory_get_usage()/1024/1024)."\n";
echo "mm1=".(memory_get_peak_usage()/1024/1024)."\n";
$a = &$s;
echo "mc2=".(memory_get_usage()/1024/1024)."\n";
echo "mm2=".(memory_get_peak_usage()/1024/1024)."\n\n";
$s = str_pad('', 1033999 ); // почему вот здесь используется 2 метра памяти, хотя генерируется и присваевается 1 ?
echo "mc3=".(memory_get_usage()/1024/1024)."\n";
echo "mm3=".(memory_get_peak_usage()/1024/1024)."\n";
$b = &$s;
echo "mc4=".(memory_get_usage()/1024/1024)."\n";
echo "mm4=".(memory_get_peak_usage()/1024/1024)."\n\n";
/*
mc1=1.0476989746094
mm1=1.0477294921875
mc2=1.0477752685547
mm2=1.0477752685547
mc3=1.0477981567383
mm3=3.0200119018555
mc4=1.0478439331055
mm4=3.0200119018555
*/
?>
PHP:
<?
function a($a) {
// почему здесь 3 метра в памяти, а не два?
echo "mc2=".(memory_get_usage()/1024/1024)."\n";
echo "mm2=".(memory_get_peak_usage()/1024/1024)."\n";
$b = $a."";
echo "mc3=".(memory_get_usage()/1024/1024)."\n";
echo "mm3=".(memory_get_peak_usage()/1024/1024)."\n\n";
}
$s = str_pad('', 1033999 );
echo "mc1=".(memory_get_usage()/1024/1024)."\n";
echo "mm1=".(memory_get_peak_usage()/1024/1024)."\n\n";
a($s."");
echo "mc4=".(memory_get_usage()/1024/1024)."\n";
echo "mm4=".(memory_get_peak_usage()/1024/1024)."\n\n";
/*
mc1=1.0486755371094
mm1=1.0487060546875
mc2=3.0216674804688
mm2=3.0216674804688
mc3=4.0078430175781
mm3=4.0078430175781
mc4=1.0490112304688
mm4=4.0078430175781
*/
?>
PHP:
<?
function a(&$a) {
// почему здесь 2 метра в памяти, а не 1?
echo "mc2=".(memory_get_usage()/1024/1024)."\n";
echo "mm2=".(memory_get_peak_usage()/1024/1024)."\n\n";
}
$s = str_pad('-', 1033999);
echo "mc1=".(memory_get_usage()/1024/1024)."\n";
echo "mm1=".(memory_get_peak_usage()/1024/1024)."\n\n";
a($s);
echo "mc3=".(memory_get_usage()/1024/1024)."\n";
echo "mm3=".(memory_get_peak_usage()/1024/1024)."\n\n";
/*
mc1=1.046516418457
mm1=1.046516418457
mc2=2.0331268310547
mm2=2.0331268310547
mc3=1.0470199584961
mm3=2.0331268310547
*/
?>