Opera was the first major browser to introduce Tabbed Browsing in Version 7.0 that was
released in 2003. Firefox was the first Hegemonic Browser to introduce
Tabbed Browsing in 2005 with Version 1.5
. IE7 In 2006 followed up on that Trend and Introduced Tabbed Browsing. Every Other Browser that has entered the market since such As
Google Chrome 1.0
has shipped with Tabbed Browsing. Tabbed browsing is very nice for the user but the user with ten clicks could easily create ten different Tabs and that
would very easily take over the Entire Operating System’sPhysical Memory Pool. That’s because XHTML like its sister XML is generally parsed by Web Browser by Constructing using Memory Intensive Operation
Called Browser DOM.
Moreover modern browsers further isolate each tab so that a plugin (such Adobe Flash Player)
experience possible. The issue is though all of this guarantees that Every Browser Tab (Process) is essentially using a Ton of resources. I Must Say that
Firefox actually uses a model where all tabs run with in the same Process Address Space. So This Problem of Heavy Memory Footprint is less
of a problem in Firefox but respectively Firefox tabs can be tied much more closely to each other in terms of stability or instability.
The thing is most Tabs are normally either invisible or they are inactive. That is if you are reading a Two Page NYTimes Article It is going to take you
some time and chances are that you have that tab Window in Full screen or nearly taking over all the screen. So there is essentially no need for your other
Tab that is running a paused YouTube Video to be running with full power.
Let’s Examine How IE11 reduces an Inactive Tab (or invisible Tab)’s resource consumption footprint. Internet Explorer 11 essentially has a counter by which if the
Tab remains invisible for about 45 seconds a Number of Threads that the Tab runs will be stopped. In addition Tab’s PrivateBytes usage of the process will be
significantly reduced. IE actually unloads all BHO’s and Toolsbars and
browser Extensions that are hosted by the Tab which has been marked as inactive.
PrviateByte: Meaning Memory that that is not related to working set (code That is loaded to be ran) and Data that is not global Data.
Figure1: IE11 with “about:blank” page visible Notice That Private bytes is about 11 MB.
Figure2: IE11 with “about:blank” page visible Notice That Thread-count is 19.
Figure 3: IE11 with “about:blank” page when InActive Tab Private bytes is about 8.5 MB.
Figure 4: IE11 with “about:blank” page when Tab is InActive Thread-count is 13.
As you notice even in the case of a completely blanks page such IE’s Default Blanks page There is a considerable reduction In memory footprint as well as
thread-count which by extension could mean CPU Usage would go down as well.
But let’s examine a Page that is bit more Complicated. See Figure 5 for Sample HTML Page that would basically insert h1 Html element with a TimeStamp every
6 seconds. This TimeStamp Page would obviously consume more memory and cpu cycles than the Blank-Page.
Figure6: Figure 6 show What Sort of Content TimeStamp page would generate.
Figure 7: See the Graph Private Bytes Usage of Timestamp Page as it is mostly visible. See that the Memory usage of the IE Tab container process gradually increases.
Figure8: See that When the Page keeps going visible the Memory Usage Climbs and When it goes invisible after a while the memory usage of the IE Tab Container process declines.
Figure 9: Notice that When the TimeStamp page is visible the CPU Activity of the Process climbs to something like .111-1.15% when the java script code periodically gets executed.
Figure10: See that When Timestamp page is considered inactive the Cpu Usage is considerably less than when the page is active. That could be because the Browser is not actively being rendered and thus less CPU usage.
In a Future blog Post we can also explore GPU usage or lack of GPU usage by an active Tab vs. inactive Tab. Let’s just put it simply that the Tab Process
virtually uses no GPU Cycles when the page is In-Active.