代码可以计算出内存是否完全被使用, ini设置处:memory_limit = 1024M
代码跑完将显示如下信息:
memory_limit:320M
all run count: 55924054
\$data string size:266.67MB
run memory: 266.67MB
可同时打开任务管理器查看内存占用, 可明显看出内存上涨过程.
运行时间有点长, 请慢慢等待执行完成.
测试环境, win8 apache2.4.3 PHP5.4.12
<?php
set_time_limit(0);
echo ‘memory_limit:‘. $memory = ini_get(‘memory_limit‘).‘‘;
$string = str_repeat(‘abcde‘,50000); // 运行字符串, 可修改这儿.
$memory =($memory+0)*1024*1024;
$runtime = memory_get_usage();
$runcount = abs(($memory / strlen($string)) * 0.99); // 为什么+1? 因为需要留点内存给其它变量或者计算式.
$i = 0;
while($i < $runcount){
$i ++;
$data .= $string;
}
echo ‘all run count: ‘.$i.‘‘;
echo ‘\$data string size:‘. sprintf(‘%01.2f‘,strlen($data) / 1024 / 1024) .‘MB ‘;
echo ‘run memory: ‘. sprintf(‘%01.2f‘,(memory_get_usage() - $runtime) / 1024 / 1024) .‘MB‘;
echo ‘memory_get_peak_usage: ‘.sprintf(‘%01.2f‘,(memory_get_peak_usage() - $runtime) / 1024 / 1024) .‘MB<br>‘;
exit();