This is a follow up post for Why Internet Explorer will kill your memory – Part I that I published in March this year. A lot of people have been requesting this and I’m sorry for keeping you waiting so long. I think the reason why this post have been delayed is that I’ve been putting to much into it. I wanted it to cover everything; Internet Explorer 8 tuning, Citrix HDX MediaStream for Flash and so on. Well I just figured out let’s take the IE8 tuning in Part II and then the rest of the stuff can come in some other series.
The setting I’m about to reveal for you will save you a big chunk of memory and money, in both XenApp and XenDesktop environments. 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. Let’s take a look at some examples :
1 tab – msn.com
2 tabs – msn.com | facebook.com/xenappblog
3 tabs – msn.com | facebook.com/xenappblog | twitter.com/xenappblog
In total memory per user this would be in the correct order : 71mb / 111mb / 154mb
So with only one simple registry setting we can limit Internet Explorer to only run one instance of iexplore.exe for the frame and one for the tabs. This is a REG_DWORD key located under HKCU. For full details check out this MSDN blog post : Opening a New Tab may launch a New Process with Internet Explorer 8.0.
The numbers speak for themselves : 52mb / 62mb / 80mb. I encourage you to check it out right away, and yes it would also work on you personal computer with IE8.
Some other things to keep in mind in terms of Internet Explorer 8 :
- Add-ons add load times every time you open a new browser window or tab
- Keep restriced or trusted site zone list to a minimum
- Keep add-ons and plug-ins up to date. e.g older versions of Adobe Flash may result in browser crashes or hang
U can use the registry key also in hklm instead of hkcu. This makes it a machine wide setting instead of a per user setting.
Thanks for sharing Mark.
Correct me if I am wrong, but Google Chrome does this as well. They spawn new processes so you can kill/close individual tabs w/o having to end the entire browser process.
Setting this in HKLM didn’t work for me…
Only worked per user, so will have to apply to each user logging in to XenApp!
You can still close each tab individually, so what was the point of chewing up so much RAM?
Hi Damon,
I haven`t tryed the HKLM myself, I always run settings like this in a User Policy HKCU. If a tab in IE8 crashes, only the tab itself are closed down. When you are using this registry hack all tabs will be closed down, but on the positive side you will be using a lot less memory.
I was googeling to check the preformance of IE 9 when i found this.
IE8 javascript, 10 times faster with Google plug-in. http://www.computerworld.com/s/article/9138459/IE8_runs_10_times_faster_with_Google_plug_in
Thanks for sharing, if anyone gets time to test it please provide your result here.
The policy works great. It reduces the memory footprint of ie8 dramaticly. But on the Other hand. IE8 is able to isolate JRE and Jinitator sessions. So you can run multiple sites next to each other whitout the problem of sharing cache files.
So in some situations the solutions is not preferrable due to limitations of the application set
Thanks Bas. You are correct, all environments are different, so this is just a recommendation on how you could lower the memory footprint.
Is this also related to ie9 ?
Hi Lowes,
I’ve not tested IE9 yet since there are still too many bugs
Are we saying this will only work set as a per user setting? If so how would one apply it to effect all users that could potentially log onto any one of 24 servers in a farm?
This setting can easily be set with Group Policy Preferences (GPP). This will effect all existing and new users. If you download my eBook you’ll get instructions on how to use GPP. You can however use either HKLM or HKCU settings.
Thanks Trond, can you send me the link to the GPP ebook download please i wish to trial this setting.
Sorry cancel that last request (i’m losing my marbles here..) i already have the book, its brilliant thanks again.
There is a Group Policy for this setting, much easier than setting a registry key IMO.
Computer Configuration > Administrative Templates > Internet Explorer > Set tab process growth
set to 0
We found that every 150MB for single tab growth, it was only using 100MB for zero tab growth. If one tab hangs and you restart the process, IE will automatically try to recover all tabs.
Thanks Sam, that’s correct, you can also set it in GPO. Note: On Terminal Server, the default value is the integer of 1. http://blogs.msdn.com/b/askie/archive/2009/03/09/opening-a-new-tab-may-launch-a-new-process-with-internet-explorer-8-0.aspx
The challenge here is if you have to do a run as instance of IE8. For example using citrix edgesite in ie8 i have to do a run as to launch ie and then go to the edgesite url or i am blasted with logins over and over.
sure i’m sure there is a way to resolve that in the edgesite config but there are other times runas is the way to get some site to work. If you set the value to 0 the run as functionality can break.
what about using the the entry of low via group policy so that it maxes at 5 tab processes?
That good advice Curtis, we normally do low in GPO if not doing the reg hack.
My 2-cents, for my environment, which is XA 6.5 on Server 2008 R2, this seems to have worked for me for IE 9, but for the 32-bit Internet Explorer, not the 64-bit. When running the 64-bit IE, the iexplore.exe process would still get out of hand. But with the 32-bit process, it seems to be more controlled. Just my observation.
Thanks. Would recommend using IE9 32-bit since that’s the only version working with HDX Media Stream for Flash.