Firefox has been my main browser over the past 10 years and apart from the odd performance issue, I seldom had any other issue with it. Usually after a year when it would start to slow down, I would wipe its profile to bring its performance to a like-new installation again.
Over the past few years, some of my friends started criticising its memory usage, particularly with multiple tabs open and a few have since moved to another browser. With 12GB of RAM in my PC, I never really noticed its RAM usage until I started checking the task manager. However, over the past few months, I started noticing another issue where when I left certain websites open in other tabs for more than 10 minutes such as those containing Flash ads, it would stutter, particularly when scrolling or typing in the browser.
So as a quick test, I opened up 10 tabs with flash-heavy websites, opened Task manager and monitored the Firefox process without touching the PC. To my surprise, Firefox’s memory usage started climbing and kept on going up, hitting 1GB in just 10 minutes. I began to wonder whether this was just a fault with Firefox or if other browsers did the same, so I decided to run the following experiment.
I started by installing Firefox Portable in a new folder so it runs with a clean profile and independent of the main Firefox installation. I then launched Internet Explorer, Opera, Chrome and Firefox Portable and opened Google.ie in the four browsers. I took memory readings of the browser processes and then opened the Donegal Daily website in the same single tab. Donegal Daily is my local community news website that has multiple Flash and animated ads, making it ideal for this test.
For the memory readings, I used the Windows Task Manager and sorted the processes by name to group processes together. As each browser uses multiple processes, I added up the values in the ‘Memory (Private working set)’ for the main processes of each browser. I did not include the Flash plug-in processes as it is unclear which browser is using which Flash process. On the other hand, no Flash process used more than 32MB throughout this test.
With the Donegal Daily website loaded in each browser and sitting idle for 2 minutes to ensure its content has fully loaded, I took another set of memory readings. I left the PC idle for 30 minutes and took screenshots of the task manager process listings to collect memory and CPU usage timings. Like with the memory readings, I added up the CPU usage readings of the main processes for each browser. Finally, I opened Google.ie in the four browsers, let them idle for 2 minutes and took one more set of memory readings.
The following are the results, with green and red highlighting the lowest and highest readings, respectively:
When the browsers are launched, Opera and Chrome use quite a lot of RAM, nearly three times that of Internet Explorer. Firefox’s usage is 84MB which doesn’t seem as bad to start with. Internet Explorer is using just over 45MB.
With the Donegal Daily website opened in each browser and left to settle for about 2 minutes, the memory usage goes up dramatically with each browser using nearly 3 times the initial RAM usage. This is not really surprising considering that website homepage currently contains 12 advertisements, most of which are Flash based and animated.
After 30 minutes with this single tab left open in each browser, every browser used additional memory. Not only did Firefox use 6 times more memory while left untouched for 30 minutes, it used about 16.5 minutes of CPU usage! Chrome nearly doubled its memory usage and used about 6 minutes of CPU usage. Opera used just 80MB of additional memory and less than 5 minutes of CPU usage.
Internet Explorer which was once considered a resource hog clearly stands out now in this test using just 16MB more RAM than when the test started and about 3.5 minutes of CPU time. To rule out ads failing to load or the Flash plug-in crashing, I checked each browser and the Flash ads were still loaded and any animated ads still playing. It is also worth noting that the Firefox process usage was intermittently spiking to 1600MB at this point, while the other browsers had a fairly stable memory usage.
As a final memory leak test, I loaded up Google.ie in the same tab in each browser so that they were all displaying the same webpage when I took the initial memory readings. Firefox took about 5 seconds to respond to my keystrokes at this point, likely due to its heavy resource usage at this point. Surprisingly, all four browsers managed to recover most of their memory usage once left to settle for about a minute. Although Internet Explorer is using nearly double its initial RAM usage, it is clearly ahead of the other three, with Firefox using nearly 300MB with just the Google homepage open.