Firefox ticks many boxes, but the one big cross it has had to bear over the years is the memory leakage problem that many users have experienced. Here's how it works: user has Firefox browser open and visits websites, Firefox slurps up some system resources, user continues to keep Firefox running, Firefox continues to slurp up ever increasing amounts of precious system resources. Well, that has been the allegation at least, and one which Mozilla has been long at pains to deny. Whenever the subject has cropped up, the official response has always been that there is simply no significant memory leakage with Firefox or anything else that uses the gecko engine for that matter thank you very much.
At long last a senior figure in the Mozilla hierarchy, Christopher Blizzard who has not only contributed much to the Mozilla project as well as holding down his full time job of a systems engineer and open source developer at Red Hat but also sits on the Mozilla Corporation Board of Directors, has admitted that there is a problem after all. Writing in his blog Blizzard claims that because Mozilla is looking at the mobile space, where memory issues become ever increasingly important, "we are spending time looking at memory pressure issues more closely."
It is not all change when it comes to the Mozilla line though, because Blizzard still denies there is any significant memory leakage, instead blaming memory fragmentation instead. "I know that the Mozilla team has been pretty diligent about fixing memory leak bugs. Allocations are tracked closely across checkins and leaks are fixed when they are discovered" Blizzard says, continuing "it sounds like the early data suggests that Mozilla really doesn't leak that much memory at all. But it does thrash the allocator pretty hard and that's what causes the perception of memory leaks."
Over at Pavlov.net another Mozilla developer, Stuart Parmenter, has been doing some really rather impressive and in-depth research to get to the bottom of the memory fragmentation issue. "I've been doing a lot of work trying to figure out why after loading a lot of pages much of your memory seems to disappear" Parmenter reports, adding "why after a while do we end up using more memory than we should be if we aren't leaking and our caches are clear? At least part of it seems to be due to memory fragmentation." One of the things that Parmenter has been doing is looking at how Firefox behaves when, for example, a search page opens up lots of windows with lots of pages. After waiting for all the pages of one such search to open, Parmenter closed them all and then loaded about:blank and ran the RAMBack tool. The resulting heap was 29,999,872 bytes, of which 16,118,072 was being used while the remaining 13,881,800 bytes was in free blocks, and scattered in between tiny used blocks to make matters worse. So it looks as if fragmentation could be the answer after all, with any allocations under 4k going at the end because they cannot be fitted in anywhere earlier. End result, handing big chunks of contiguous memory back to the OS becomes an almost impossible task.
Parmenter and others are busy working on possible solutions, but don't expect a quick fix any time soon. For now, as before, it seems the only way to prevent Firefox from grinding to an eventual halt is to close it down and restart at least once a day, more for particularly busy browsers…