Поделиться через


Opening a New Tab may launch a New Process with Internet Explorer 8.0

Hi everyone!

Shahinur again, with an IE8 topic this time…

If you have been using IE7, you are probably used to all your tabs opening under the same iexplore.exe process. The only exception is if you are on a Windows Vista machine and you are moving from Protected to Unprotected mode.

Internet Explorer 8 had a big makeover in this area. You will now notice that new tabs typically open in a new process.  By default,  IE8 will start with two instances of iexplore.exe (one for the Frame, one for the tab) and grows the number of tab processes as needed based on the amount of available RAM, the number of tabs, the integrity levels for tabs, and the number of distinct IE sessions .

You do have control over this new design through a registry key:

HKCU\Software\Microsoft\Internet Explorer\Main - TabProcGrowth (string or dword)

Tab Process Growth : Sets the rate at which IE creates New Tab processes.  There are two algorithms used by Internet Explorer.

1. Context-based: By default, the context-based algorithm is used and the curve is chosen based on the amount of physical memory on the machine. In addition, the TabProcGrowth string registry value may be manually forced to:

  • small: Maximum 5 tab processes in a logon session, requires 15 tabs to get the 3rd tab process.
  • medium: Maximum 9 tab processes in a logon session, requires 17 tabs to get the 5th tab process.
  • large: Maximum 16 tab processes in a logon session, requires 21 tabs to get the 9th tab process.

2. The "Max-Number" algorithm: This specifies the maximum number of tab processes that may be executed for a single isolation session for a single frame process at a specific mandatory integrity level (MIC). Relative values are:

  • TabProcGrowth=0 : tabs and frames run within the same process; frames are not unified across MIC levels.
  • TabProcGrowth =1: all tabs for a given frame process run in a single tab process for a given MIC level.

Note: On Terminal Server, the default value is the integer of 1.

  • TabProcGrowth >1: multiple tab processes will be used to execute the tabs at a given MIC level for a single frame process. In general, new processes are created until the TabProcGrowth number is met, and then tabs are load balanced across the tab processes.

Note: that the frame process is no longer allowed to execute at low-MIC. If this is attempted, the process will exit.

You may select the Max-Number algorithm by specifying the registry value as an integer. The registry value may be a string value containing an integer (eg, "5") or a DWORD value containing an integer (eg, 5).

In general, you have to restart IE to use a different TPG value.

The above changes in design are a result of our new Loosely Coupled IE (LCIE) framework. LCIE separates the frame and tab code to the point they can be run in different processes. You can read more about it in the following blog.

The most obvious value of doing this is to increase reliability of IE; that is, even if a tab (process) crashes, IE (the frame) survives, along with any tabs that were in other tab processes. The second benefit of frame/tab separation is to enhance the Low Rights IE (protected mode) experience and security. Because tabs run in other processes, we can "unify the low and medium IL" frames into a single frame. As a result, we no longer have to open new frame windows to move from protected to unprotected mode. Further, infection of a given tab process is more isolated from the frame and other tab processes.

That’s all for now!

Thank you,

The IE Support Team

Comments

  • Anonymous
    April 30, 2009
    Loosely Coupled IE (LCIE) sounds good but somehow cause an issue with Visual Studio .NET 2003 in debugging mode.
  • Anonymous
    June 04, 2009
    Have to test if this solves the sporadic crashes like this (even with add-ons disabled):Firma del problemaNome evento problema: APPCRASHNome applicazione: iexplore.exeVersione applicazione: 8.0.6001.18702Timestamp applicazione: 49b3ad2eNome modulo con errori: mshtml.dllVersione modulo con errori: 8.0.6001.18702Timestamp modulo con errori: 49b3aeb3Codice eccezione: c0000005Offset eccezione: 000a25c6Versione SO: 6.0.6001.2.1.0.768.3ID impostazioni locali: 1040Informazioni aggiuntive 1: fd00Ulteriori informazioni 2: ea6f5fe8924aaa756324d57f87834160Ulteriori informazioni 3: fd00Ulteriori informazioni 4: ea6f5fe8924aaa756324d57f87834160Ulteriori informazioni sul problemaID bucket: 1183185906
  • Anonymous
    June 24, 2009
    about my problemabout my problem
  • Anonymous
    July 25, 2009
    I use IE8 with Windows XP.  I have a real performance problem when I click on a hyperlink, open or close Tabs.  The CPU usage goes to 100% and the explorer.exe and the multiple iexplore.exe processes (usually 4 or 5) all start using CPU.  They are all at 00, but will quickly jump to a combined total of 100 if I click on a hyperlink.  It takes sometimes 3-5 minutes to open the hyperlink in a new Tab.  Additionally, they jump when a Tab is closed and stay at 100 for about 40 seconds; similarly jump to 100 when a Tab is closed for 50 seconds.  Right now I have 6 Tabs in 2 windows with 5 instances of iexplore.exe running.  Turning off add-ons had no effect.  I would appreciate your help on this.
  • Anonymous
    August 07, 2009
    Visual Studio .NET 2003 and Visual Studio .NET 2005 have the same problem.try the following..In the RegisterKey go toHKCUSoftwareMicrosoftInternet ExplorerMainADD DWORD with the name TabProcGrowth and set the value to 0
  • Anonymous
    August 10, 2009
    Apparently IE8 doesn't support "run as" that is to say running IE8 as another user, without having TabProcGrowth set to 0.I would prefer to be able to separate my browsers and run them under different user accounts without having to keep using fast user switching. BTW would also be nice if I could have them use different colour schemes for the titlebars etc.This way I can have one browser instance for banking, and another for my regular sites, and yet another browser instance for less trusted sites.As it is, I am sticking with IE6 because it seems IE8 does not support this well.Might be just coincidence but I've experienced two XP computers that had IE7, and for some reason fast user switching often does stops working on them (can't enter password - have to use ctrl-alt-del as workaround). So I'm sticking to keeping my "old" stuff patched and not moving to the new stuff yet.
  • Anonymous
    August 10, 2009
    Ah the "can't enter password" problem I was talking about was this one:http://support.microsoft.com/kb/917556No fix even after 3 years though (people have been complaining about it for years).
  • Anonymous
    September 03, 2009
    An unpleasant side effect of this innovation is that older versions of Developer's Studio do not attach a debugging process to the browser. Setting dword TabProcGrowth  to 0 fixes it, however (1) this information is somehow hidden from developers (I had to do a web search; found a solution at http://weblogs.asp.net/abdullaabdelhaq/archive/2009/06/01/VS-Debug-Problem-with-IE8.aspx); (2) this change affects the behavior of all instances of the browser, not just the one that the debugger is working with.
  • Anonymous
    October 26, 2009
    "Loosely Coupled", I struggle to find something positive to say about IE 8.  I am a Microsoft kinda guy.  I've been with you guys since NT 3.51.   SharePoint MCTS etc.  IE 8 is just not stable. It crashes when I get more than a handfull of tabs open.  With Firefox I never have trouble.  Why is it that IE 8 can't handle more tabs.  I am on a dual proc PC with 3 gigs of ram and just Onenote and Outlook running. Even when I close those two down it still gives me fits.  Very hard to work when I am researching through tech articles and trying to find answers.
  • Anonymous
    November 06, 2009
    I do agree with Keith Caravelli. If i have only one instance of IE open, with a few (3) tabs and i open another tab IE8 crashes. It's very anoying when i am making a service call for a customer and i have to open a new tab and IE crashes... i am all my text in the service call is lost
  • Anonymous
    November 17, 2009
    Note: On Terminal Server, the default value is the integer of 1 for TabProcGrowth is incorrect.On a windows w2k3 sp2 system fully patched till november 2009 IE8 still creates an extra process. The value does not exist. After creating the value it does function correctly.
  • Anonymous
    January 01, 2010
    If a person is not a programmer most of the information here makes no sense.I do not know what a "new process" means.I use multiple tabs to support my work- this really _____.That spot was for a bad word!!!Can we go back to IE7 or any pervious version and still use windows 7 which I love except for IE8.Help
  • Anonymous
    January 08, 2010
    The comment has been removed
  • Anonymous
    January 20, 2010
    The comment has been removed
  • Anonymous
    January 24, 2010
    I have IE8 in windows 7 Pro. when i open any mail site such as gmail or hotmail in the first tab is fine... when i open new tab and enter the URL gmail again for a different user. it gives me the same user automatically logged in. very imitating pls help.
  • Anonymous
    January 24, 2010
    I have IE8 in windows 7 Pro. when i open any mail site such as gmail or hotmail in the first tab is fine... when i open new tab and enter the URL gmail again for a different user. it gives me the same user automatically logged in. very irritating pls help.
  • Anonymous
    February 03, 2010
    While accessing a secure website on a terminal server using IE8 any links that open a new window may ask the user to log in again and never actually open the link creating a loop.  think logging in to a secure site and trying to open a bill statement in a pdf window.  Since this is a per user setting making the registry change isnt practical, theres a group policy though:User ConfigurationAdministrative templatesWindows Componentsinternet explorer: "Set tab process growth"
  • Anonymous
    March 18, 2010
    I have added DWord TabProcGrowth = 0. Becuase of that I'm able to debug my VS applications, But getting an issue of Internet access. I'm not able to sruf the net in other new windows. If I removed TabProcGrowth, I'm able to sruf the net but issues with VS application debugging. Please helpme out for the issue.
  • Anonymous
    September 26, 2010
    I think we have a Loosely-Coupled IE Support Team and End User interface here.This is an IE bug, fix it so we all get on with our lives.
  • Anonymous
    December 10, 2010
    Keith and Harro,Are you sure the issue is IE8 and not an add-on?
  • Anonymous
    December 10, 2010
    The comment has been removed
  • Anonymous
    April 10, 2011
    The bloat caused by multiple IExplore.exe consuming all my memory kills my computer to where I have to reboot. Is there a "no-bloat" version of IE avaialble?
  • Anonymous
    April 20, 2011
    The comment has been removed
  • Anonymous
    November 06, 2011
    Is there any configuration tips to be sure that IE (6, 7 and 8) creates a new HTTP session when adding a new tab or opening a new window ?We are using IE for an intranet application. We don't care about performance issue because we only need 2 separate sessions.Regards
  • Anonymous
    November 30, 2012
    Thanks for this post, i will try that.
  • Anonymous
    December 12, 2012
    With TabProcGrowth parameter situation is much better but ca 20% cases are still broken - in our case smartcard pin dialog appears behind IE window. Anyone with same experience?
  • Anonymous
    March 10, 2013
    why i can not assist to the internet explorer.so i can not open of any website
  • Anonymous
    July 25, 2014
    Given that TabProcGrowth is undefined, why are the per-page processes 32-bit even if the frame is 64-bit?
  • Anonymous
    January 22, 2015
    We are using IE 9 for a WebApp. the multiple processes bites us a lot. after reading this blog, I tried it with IE9. initially it looked very promising. but after a while, it started showing up issues. sporadically the links that would open new IE windows also started launching new process. this was alarming as I had set TabProcGrowth to 0. and there is no deterministic way to reproduce this. it happens sporadically. Does anyone know why TabProcGrowth set to 0 will still create multiple processes
    • Anonymous
      July 28, 2016
      DK - if you run IE from the start menu again it will create a new process no matter what. it will always be a new process.