On Fri, Oct 10, 2008 at 3:32 PM, Nathan Rixham <nrixham@xxxxxxxxx> wrote: > Alan Boudreault wrote: >> >> Hi all, >> >> I'm wondering why PHP doesn't free my memory with this test code. The >> memory usage is always the same even if i unset my object. The Garbage >> collector seems to only free the memory at the end of the script. >> >> Here's the php Scripts that i use for testing: >> >> <?php >> //dl("php_mapscript.so"); >> >> function test() { >> $oShapeFile = ms_newShapefileObj( >> "/opt/www/bdga/msp/data/bdga/BDGA_HYDRO_S_POLY.shp", -1); >> echo "before getShape : ".memory_get_usage(true)."\n"; >> for ($i=0; $i<$oShapeFile->numshapes;$i++) { >> $oShape = $oShapeFile->getShape($i); >> $oShape->free(); >> unset($oShape); >> $oShape = NULL; >> } >> >> echo "after getShape : ".memory_get_usage(true)."\n"; >> $oShapeFile->free(); >> unset($oShapeFile); >> $oShapeFile = null; >> >> echo "after free : ".memory_get_usage(true)."\n"; >> } >> >> echo "start : ".memory_get_usage(true)."\n"; >> test(); >> echo "end : ".memory_get_usage(true)."\n"; >> >> ?> >> >> Output result: >> start : 262144 >> before getShape : 262144 >> after getShape : 11010048 >> after free : 11010048 >> end : 11010048 >> >> I've also run valgrind to be sure that is not my extension that doesn't >> free its memory: >> $ valgrind --leak-check=full php -f shapeTest.php >> ==18730== LEAK SUMMARY: >> ==18730== definitely lost: 0 bytes in 0 blocks. >> ==18730== possibly lost: 0 bytes in 0 blocks. >> ==18730== still reachable: 240 bytes in 2 blocks. >> ==18730== suppressed: 0 bytes in 0 blocks. >> >> >> Thanks, >> Alan >> > > interesting, I'm finding the same thing in one of my atom feed parsers; over > time no matter how much I unset / truncate variables the memory usage stills > grows over time - at this time I can't find any way to bring it right down; > on a timer the whole script resets and restarts itself; > > one thing I have noticed is that I can see the emalloc memory usage report > dropping and rising [memory_get_usage( false );], but still rising over > time.. > > hope this wasn't a hijack; just here trying to figure out the same problem > at the minute! > > Regards.. > > Nathan > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > I think the engine doesn't really worry about freeing memory until it has to. Or was this only on circular references? I remember there was that whole GSOC project to implement garbage collection, but it never got implemented. Maybe someone who really knows will chime in. -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php