In our recent coverage of the Firefox 3 beta releases (1, 2, 3, 4), we have noted performance improvements and a significant reduction in memory consumption relative to Firefox 2. The enormous amount of effort that developers invested in boosting resource efficiency for Firefox 3 has paid off, and the results are very apparent during day-to-day use.

During intensive browsing with approximately 50 tabs, I have found that Firefox 3 generally consumes less than half of the memory used by Firefox 2.0.0.12. Firefox 3 is also snappier and more responsive when switching between tabs and performing other operations that typically lag in Firefox 2.0.0.12 when the browser is experiencing heavy load.

Mozilla developer Stuart Parmenter has written an overview of the tactics that were used to reduce Firefox's memory footprint and also reveals the results of a memory benchmark he performed to compare Firefox 3 with other browsers. The memory benchmark, which uses the Talos framework and was conducted on Windows Vista, replicates real-world usage patterns by automatically cycling pages through browser windows and then closing them. Firefox 3 used less memory than Firefox 2, Internet Explorer, and Opera, and it also freed more memory than the other browsers when pages were closed. Safari 3 and Internet Explorer 8 could not be benchmarked because they crashed during the test.

The results of this experiment, which others have been able to consistently reproduce using the same tools, represent a big victory for Firefox, which has previously faced widespread criticism for its high memory consumption. To achieve that victory, developers approached the problem from many different angles. To reduce memory fragmentation, the developers attempted to minimize the total number of memory allocations, particularly during startup. The developers also adopted FreeBSD's jemalloc allocator, which helped reduce fragmentation and improve performance.

Another big improvement is the new XPCOM cycle collector, which automatically detects unused objects that are persisting as a result of mutual references. Parmenter notes that the cycle collector has notable implications for extensions because it will be able to proactively eliminate certain kinds of memory leaks introduced by Firefox extensions that manipulate Firefox's internals. Caching behavior has also been improved so that it is less wasteful, and decompressed image data is no longer stored.

Mozilla evangelist Christopher Blizzard, who also wrote about the memory improvements, offers readers another insightful take-home message: the small memory footprint in the latest Firefox 3 beta, he says, is proof that Firefox is ready for mobile environments. "What it shows to anyone who looks is that we're able to hit the kinds of memory and performance requirements that mobile platforms demand," wrote Blizzard. "Users who use our software on mobile devices can expect web sites that just work, access to add-ons all balanced against the hardware limits imposed by mobile devices. In essence, we can bring that no compromises approach to mobile, just as we've done it with the desktop."

The upcoming Firefox 3 release has much to offer in addition to a smaller memory footprint, including an improved user interface, new themes that increase visual platform integration, a completely revamped bookmark and history system that uses an SQLite database, a Cairo-based rendering backend, full-page zoom, support for JavaScript 1.8, and many other new features. These improvements will likely continue to push Firefox's climbing market share.

Further reading