I was reading an email from stdin. But regardless of bad coding style :-), the script is using _way_ more memory than it should.
$s = ''; while(strlen($s) < 266768) { $s.= 'd'; } this code uses 151Megs on my system. the same code uses about 2megs with php4.3. php4.3 seems to realloc/memcpy when the string gets big, and php5 just does malloc's and memcpy's (I don't see calls to free() though). I'm thinking the problem might be in zend_mm_realloc? Tom Andi Gutmans <[EMAIL PROTECTED]> wrote: > > At 12:30 AM 12/8/2002 -0800, Tom wrote: > >hey there, > > > >I'm using the cvs and ZE2, there seems to be some huge memory usage when > >concatenating a string to a length over 262080 bytes, when the string > >length gets to that size the malloc call inside > >zend_mm_add_memory_block starts grabing memory 262168 bytes at a time, > >every 8th concatenation (i'm concatenating 1 byte at a time). > > > >anyone else seen this? > > It makes sense that this is happening to you. Reaching the point where you > add to a string of such size is very bad coding practice (unless you really > have no choice). This is because if the memory manager can't realloc() (it > very often can't) then it'll have to allocate a new block and use a > memcpy() to copy over all of the string. > The current code is less than optimal in this case and I can choose various > strategies to improve on it but there will always be times where the > malloc()/memcpy() will be necessary. > So what are you doing? Is it something you have to do? > Andi > > > -- > PHP Development Mailing List <http://www.php.net/> > To unsubscribe, visit: http://www.php.net/unsub.php > > -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, visit: http://www.php.net/unsub.php