Mailinglisten-Archive |
Norbert Pfeiffer wrote:
> Hi Sebastian,
>
>>> Man muss auch beachten, dass man soviele unset($irgendwas);
>>> einfuegen kann, wie man will. Waehrend des aktuellen Laufes
>>> wird der RAM nicht wieder verfuegbar.
>> nicht wieder verfügbar für andere Prozesse (außerhalb PHPs)
>> aber PHP selber kann den so 'freigegebenen' Speicher für was
>> anderes verwenden.
> koennte !!!
> a - wie ich schon schrieb, mit unset(); ist die Variable
> zwar weg, aber der RAM nicht wieder verfuegbar - test it
> b - keine Scriptsprache gibt den RAM waehrend des Runs an das
> BS zurueck, was man leicht asprobieren kann, indem man das
> Script animiert immer neuen Speicher zu allocieren und
> paralell alten RAM "freizugeben". Diese Schleife endet
<?php
if (! function_exists('memory_get_usage')) {
echo 'cannot run memorytest, needs --with-memory-limit';
exit;
}
/**
* testing memory consumption
*/
$loops = 1000;
$data = str_repeat('X', 1000);
echo 'Memory before unset loop: ' . memory_get_usage() . "<br />\n";
for ($i = 0; $i < $loops; $i++) {
$varname = 'var' . $i;
$$varname = $i . $data . $i;
unset($$varname);
echo 'unset loop ' . $i . ': ' . memory_get_usage() . "<br />\n";
}
echo 'Memory after unset loop: ' . memory_get_usage() . "<br />\n";
echo 'Memory before loop: ' . memory_get_usage() . "<br />\n";
for ($i = 0; $i < $loops; $i++) {
$varname = 'var' . $i;
$$varname = $i . $data . $i;
echo 'loop ' . $i . ': ' . memory_get_usage() . "<br />\n";
}
echo 'Memory after loop: ' . memory_get_usage() . "<br />\n";
echo "\n" . '<hr />finished';
?>
------------------------------------
php-Version: 5.1.2 - php-OS: Linux -
Memory before unset loop: 53312
unset loop 0: 53352
unset loop 1: 53352
...
unset loop 999: 53440
Memory after unset loop: 53440
Memory before loop: 53440
loop 0: 54448
loop 1: 55496
...
loop 999: 1132904
Memory after loop: 1132904
finished
> immer mit einem Scriptabbruch und unter Windoof auch schon
> mal mit dem Niedergang des BS ... ;-)
Windows ... kennt ja auch kein memory_limit und somit auch kein
memory_usage() da kann man das eh nicht testen
--
Sebastian Mendel
www.sebastianmendel.de
www.sf.net/projects/phpdatetime | www.sf.net/projects/phptimesheet
php::bar PHP Wiki - Listenarchive