Raymond Chen notes that if you have to ask where the operating system limits are, you're probably doing something wrong:
If you're nesting windows more than 50 levels deep or nesting menus more than 25 levels deep or creating a dialog box with more than 65535 controls, or nesting tree-view items more than 255 levels deep, then your user interface design is in serious need of rethought, because you just created a usability nightmare.If you have to ask about the maximum number of threads a process can create or the maximum length of a command line or the maximum size of an environment block or the maximum amount of data you can store in the registry, then you probably have some rather serious design flaws in your program.
I'm not saying that knowing the limits isn't useful, but in many cases, if you have to ask, you can't afford it.
In general, I agree with Raymond. Asking these kinds of questions definitely raises red flags. Edge conditions should never be a goal, and if your design is skirting that close to an operating system edge condition, you're either doing something incredibly brilliant or incredibly stupid. Guess which one is more common?
However, it can also be surprising how quickly you can run into operating system limits-- even when you're not doing anything that unusual.
When researching blog posts, I tend to open a lot of browser windows and tabs. At least twice per week, I have so many browsers and tabs open that I run into some internal limitation of the browser and I can't open any more. My system gets a little wonky in this state, too: right-clicking no longer shows a menu, and I'm prevented from launching other applications. But if I close a few errant browser windows or tabs, everything goes back to normal.
I prefer to use Internet Explorer for day-to-day browsing chores, but it appears that IE 7 is particularly vulnerable to these limitations. I ran a quick test in which I opened as many instances of the Yahoo home page as I could, with nothing else running:
| Maximum number of IE7 windows I can open | 39 |
| Maximum number of IE7 tabs I can open | 47 |
I don't think having 47 typical web pages open, spread across a couple instances of Internet Explorer on my three monitors, is so unreasonable. And yet that's a hard limit I run into on a semi-regular basis. It's annoying. It looks like IE6 had a similar limit; Theodore Smith found that he could only open 38 pages before new windows were frozen. Firefox fares quite a bit better in the same test:
| Maximum number of Firefox 2 windows I can open | 55 |
| Maximum number of Firefox 2 tabs I can open | 100+ |
These aren't hard limits in Firefox; they're practical limits. After I opened 55 Firefox windows, Vista automatically kicked me into Vista Basic mode due to Aero performance degradation. I was unable to close all the instances of Firefox, and I had to kill the task. Tabs worked better; I got bored opening new Yahoo homepage tabs after about seventy and gave up. I was able to close all the tabs without incident. I'm guessing you could have at least a hundred tabs open in Firefox before something suitably weird happened.
So we've learned that Internet Explorer sucks, right? Maybe. The results I saw are largely due to a key architectural difference between the two browsers. IE allows you to choose between opening web pages in the same iexplore.exe process (Open New Tab, Open New Window), or opening web pages in a new, isolated instance of iexplore.exe. Unlike IE, Firefox only allows one Firefox.exe process, ever. This clearly helps it scale better. But there is a downside: if any web page crashes, it will take down the entire firefox.exe process and every other web page you have open.
I understand the need for practical limits in the operating system. Most of the limits Raymond cites are so high that they're borderline absurd. Can you imagine subjecting a user to a menu with 254 nesting levels? Open a zillion copies of notepad, and you'll eventually have problems, too. I get that. The point is to keep those operating system limits far enough above typical usage that developers and users-- even power users-- aren't likely to run into them.
I'm not sure if we're running into an application or operating system limit here; I suspect a little bit of both. Still, I'm disappointed. A limit of only 47 tabbed web pages open at any time under Internet Explorer 7 seems artificially and unacceptably low to me. The introduction of the tabbed browsing metaphor makes it much more likely that users will open lots of web pages at the same time. I'd expect the developers on the IE team to test their application for moderately heavy usage scenarios like this. It's another case of failing to test with a reasonably large data set.
| [advertisement] TransferBigFiles.com allows you to send huge files (up to 1GB) to anyone without worrying about email attachment limits. Send via the Web site or download the DropZone utility for even more functionality. It’s fast, easy, and totally free! Transfer big files now. |
Posted by Jeff Atwood View blog reactions
« Computer Display Calibration 101 Software Branching and Parallel Universes »
you know, I have been reading your plog for some time. You always seem to strike on a brilliant point!
However, I dont think I quite see what you are getting at with this post?
One other minor note... dose Opera not count as a web browser?
Dan Cosh on October 1, 2007 04:48 PMThere's a registry setting you can use to tweak and potentially solve this problem:
http://blogs.zdnet.com/Bott/?p=269
I never get that error anymore...
Actually, it's probably more likely that the system runs low on memory and then it can't use any memory to create new windows/menus/tabs.
> I dont think I quite see what you are getting at with this post?
Test your application at moderate usage levels before releasing it. If your users are regularly running into hard-coded limits in the application (or the OS, for that matter), you failed them because you didn't test appropriately.
Jeff Atwood on October 1, 2007 05:09 PMI am positive there's some poor bastard out there writing a front end to an industrial monitoring tool in VB that is getting close to that 65K control limit.
Sometimes the people stuck writing these front ends are trained engineers that picked up programming on the side, as a tool to fix an engineering problem. Due to this, their user interfaces would induce seizures on most people trained as interface designers, but to the engineer they make complete sense because they mimic the old fashioned control board they are trying to automate.
That does not make it right, of course. But the job gets done, the engineer is happy and moves on to something else. Until a couple of years down the road a "real" programmer gets hired to "update" the app.
Pedro Vera on October 1, 2007 05:14 PMThis is a limit in the operating system itself, what you are running into is the depletion of space in the desktop heap, where the OS keeps a pointer to the location of every single UI element that has been created in memory, browsers don't create UI elements on the heap for elements on the pages itself so it wont matter what is on the pages it's the browsers elements that count.
http://support.microsoft.com/kb/126962/ describes this and http://www.microsoft.com/downloads/details.aspx?familyid=5CFC9B74-97AA-4510-B4B9-B2DC98C8ED8B&displaylang=en the heap monitor will allow you to see how different programs consume resources on the heap.
So but I agree that this limit is fairly low but it seems it hasn't been changed since NT 3.51, and taking into account that computers today have both more memory that is faster as well and faster CPU's I would think it would be OK to extend this a bit
Kjartan Þór on October 1, 2007 05:17 PMSo you actually had time to sit there and open that many webpages?
Jeff, methinks you have jumped the shark.
:)
Thanks very much to Kjartan and The Geek for pointing me to the solution.
This is indeed a desktop heap limitation.
I followed the registry editing instructions on Ed Bott's blog ( http://blogs.zdnet.com/Bott/?p=269 ) and after increasing the heap size from 3096 to 8192, I can open 50+ tabs in IE7 now.
So we *were* running into one of Raymond's fabled operating system limits. This is the kind of low-level OS tweak I'd expect to perform under Linux, certainly not for a consumer desktop OS.
(note that 64-bit editions of Windows have a much larger desktop heap by default, so this wouldn't be an issue for them)
http://blogs.msdn.com/ntdebugging/archive/2007/01/04/desktop-heap-overview.aspx
http://blogs.msdn.com/ntdebugging/archive/2007/07/05/desktop-heap-part-2.aspx
http://blogs.msdn.com/ntdebugging/archive/2007/09/13/talkback-video-desktop-heap.aspx
I think another good example is how many open socket connections you can have on Windows. The limit is typically somewhere around 2000. That may seem like a lot. But when you factor in the fact that windows does not immediately close a socket connection when you are done with it you can quickly run up against the OS limit. Windows will keep a socket connection open for an extra two minutes after you've closed it (there is a registry setting to change this default). So actually, you can only open about 17 socket connections per second over a two minute period before getting an error. That really isn't very many for server applications that might have a lot of network traffic (database connection, read/write to client, etc).
So the point being made here is very valid. Most OS limits are of a decent magnitude. But every now and then you find one that is set much lower than you would expect even under fairly moderate load.
Matt on October 1, 2007 05:40 PM39 IE windows open at once? 47 tabs?
Am I the only one that thinks that is nuts? I figure I have four or five open at once. 39? How the hell to you keep up with that?
I, too, open large amounts of tabs in Firefox when I'm surfing.
Click first, read later.
Well, when Firefox crashes, which it does as often as IE7 on my system, at least when I open it back up, it will load all those pages again.
They both have their faults, and some are worse on some systems than others on other systems
Interestingly enough, when I opened roughly 130 tabs of Microsoft.com, Firefox became slow, and when I closed all but one, the control key was stuck on, I scrolled and zoomed in.. whoops.
Matt on October 1, 2007 05:55 PM@Jeff "The Tab" Atwood:
You're bringing up a good point about setting hard limits, but once again I'm horrified by your working style. Opening 50 tabs is not being a "power user," it's just being "mental."
My normal environment is 3 vs2008 instances, 1 blend, 1 expression design, 3 firefox (@15 tabs) , 3 windows explorer, outlook, onenote, word, itunes playing, and whatever i'm debugging. Needless to say I push my poor 32 bit company laptop. Thanks for the tips.
brian on October 1, 2007 06:23 PMGranted I'm in XP, I managed to open 706 Firefox tabs, and roughly 660MB of memory. Right now I'm typing and it shows up about 5-10 seconds later, but every other program seems fine. Opening that many new tabs does seem kinda unreasonable, but it's possible.
This should become a contest...or a survey...
Jeff, you pick a web page, and we could offer our user names, system configs and browser, and test how many tabs or windows we can open of that page.
The results could be: how many can be opened before browser hangs horribly, and when it completely stops. Also, who gets a BSOD, hehe.
Matt on October 1, 2007 06:31 PMIs this 50+ tabs in one window or multiple tabs in multiple windows? Either way it sounds unwieldy.
Have you tried Sleipnir, a IE based browser with hierarchical tabs? multiple tabs in one window, but you know what tab spawned another tab. Then again, you're a multi-monitor user so having multiple browser windows maximized to a particular screen is a given.
piyo on October 1, 2007 06:37 PMI run into this too. I regularly have 50+ tabs open in a window in firefox, and I tend not to restart my machine, so programs end up lurking in the background just in case I need them (since restarting them takes so much time...). You're not alone, Jeff!
Colen on October 1, 2007 06:41 PM> Well, when Firefox crashes, which it does as often as IE7 on my system, at least when I open it back up, it will load all those pages again.
That's the sole reason I switched to Firefox. I wish I were using IE, I prefer its other features, but it has forced me to piece together whatever twenty-odd tabs I had open too many times, now.
If any IE guys read this blog, I hope you're paying attention.
mos on October 1, 2007 06:44 PM@Eam - It's not mental, it's just the result of some usage scenarios. Jeff makes fun of me for having way more than 50 tabs open at any given time. It's really useful when you're researching several things over the course of weeks or months. I find bookmarks / del.icio.us / etc. don't work for me because I forget about things, so keeping an open tab is like a live bookmark.
I like Firefox's tab handling features quite a bit more - you can tell that IE's tabs were bolted on, whereas Firefox had them from the start. Firefox saves sessions between crashes or reboots, and tools like the Scrapbook extension integrate well with tabs.
Again, though, it's all usage. If you're researching a lot of topics over a period of time, large numbers of tabs can be a big productivity booster. I've only got 40 open tabs on this machine, but the three on my desktop have over 120.
Jon Galloway on October 1, 2007 06:50 PMI have had, on at least one occasion, 150 Firefox tabs open. On a C7 processor, no less.
I read a lot of webcomics, and I'm a member of the SomethingAwful forums. I have at least 20 threads open at any one time. I open webcomics in new tabs to remind me to read them, and slowly go through them - sometimes too slowly, admittedly, but I get through them. The computer is a dedicated chat/webbrowsing/email computer, so it's not like it's taking up space on my work computer - it's just a box full of Things To Do Someday.
Interestingly, while Firefox handles that many tabs fine in terms of "allowing it to happen", it absolutely crashes and burns in CPU and RAM usage. I've seen Firefox hit literally 600mb of RAM used, and a constant 60-70% CPU used. Still, that's better than simply not allowing it.
Ben Wilhelm on October 1, 2007 06:53 PMI think the concept is that each IE7 window can have any number of tabs open, as every number is equal to 47...
Ok, yeah, that's just someone at Microsoft playing a really bad geek joke.
http://en.wikipedia.org/wiki/47_%28number%29#In_pop_culture
Jivlain on October 1, 2007 06:59 PMI concur on "mental" and wonder how many end up being duplicates because the original web pages got "lost in the sauce."
Get organized, dude.
Sheesh on October 1, 2007 06:59 PMThere are though other operating system limits that you can easily hit when it's not so obvious you're doing something wrong.
One that I've frequently seen surprise even experienced programmers occurs with Unix/Linux filesystems: the maximum number of subdirectories per directory. Modern filesystems are wonderful special purpose databases, and it is usually best to use them when you need to store a large number of files; say rather than reinventing some kind of database. But you do need to be careful about how you structure your directory tree.
In Unix the filenames "." and ".." are really not very special at all. They are in fact just files (i-nodes) stored on disk, exactly like "hello.txt" might be. Specifically "." is a hard link to the current directory and ".." is a hard link to the parent directory. The surprise occurs because there is a limit to the number of hard links any file may have, and that limit is usually quite small, around 4096 for many Unix variants (an historic artifact of fixed-size fields). Since every subdirectory contains it's own ".." file and all of them are really just hard links to the parent directory, you end up with a rather small limit on the number of subdirectories you can put in any directory. Sure you can easily put a million files in one directory, but not so with subdirectories.
Deron Meranda on October 1, 2007 07:00 PMI always do this sort of thing on OSX. I use NetNewsWire (the best RSS news reader I've found on any platform), and find myself scanning through my feeds opening up interesting pages in tabs, and tend to leave it open for days at a time adding pages and coming back t them later. I once noticed how many tabs I'd opened (99!) and went and checked Safari where I do something similar and found another 35+ tabs across three windows.
This behavior comes from opening some source -- RSS feeds, or Google in the case of y Safari usage -- and never using the back button. Just go down the list, open pages left and right and don't worry about it.
As to staying organized, I find it works well for me. It fits for my style of RSS reading where I read the high-priority stuff now, toss the interesting-but-don't-have-time-now pages into tabs for perusal later, or I open a new Safari window, search Google, and then toss interesting results into tabs for further reading. I know exactly which window has whatever research I'm doing as one look at any page tells me what the subject of that windows tabs are.
Of course I'm still looking for a non-brain-damaged RSS reader for Windows (UX is key here), but I generally use Firefox for the same purpose at work after learning that IE was completely unsuitable for the way I work.
kreiggers on October 1, 2007 07:33 PMYou can make a similar claim for hardware as well (who will ever need more than 640 Kb of RAM?).
But the truth is that when you break through those limits you can organize your programs and operating systems differently. For instance, the Erlang programming language boasts that you can start hundreds of thousands of "processes" (which are more akin to microthreads, or fibers in the Windows world) running concurrently. Perhaps we could program our operating systems along a similar route if we could easily create more than the real world limit of 200-300 threads an operating system can handle. See the Coyotos operating system for an operating system that's designed as a system of hundreds of different processes all talking to each other (http://www.coyotos.org/). We're stuck with brittle monolithic OS kernels because we grew up in a single CPU world and monolithic is more efficient with a single CPU.
The algorithms for lossy compression of music have been researched since the early 1980s, but we didn't have enough computing power to run Winamp in the background for another 15 years.
Tim Gebhardt on October 1, 2007 07:38 PMYou actually can open a second (or third, whatever) Firefox process. Add a -no-remote argument to the end of the command. I use this with a -p firebug to keep my website debugging in a separate process from my browsing. This can lead to some weirdness though, one specific problem I've had is with outside applications trying to open a link in Firefox and getting an error about needing to restart FF.
Kevin
Kevin on October 1, 2007 07:41 PMSafari has no problem opening 230+ Flickr image pages in tabs.
Andrew on October 1, 2007 08:08 PMAnd in opera I've had no more problem with over 300 tabs open than with 5.
Also, my opera theme makes the tabs smaller instead of the horrible scrolling firefox does after like 20 tabs on a window.
[and opera doesn't have the memory devouring tendency]
While Raymond's comment about limits being high enough that you shouldn't approach them may be valid on Windows, it goes against the basic design of Unix (perhaps that's what he means by design flaws...). Perhaps the limit on command line length seems high on windows, but on *nix, it's quite easy to have such long command lines. No, not because some java-inspired programmer wrote a utility that's run as
./SortStringUtility --IgnoreAllCaseDifferences --SaveTheResultToAFileAndNotToStandardIn --ReadPrimarySourceFromANetworkFile --GetTheShortSummaryAndPrintToStandardError FileOne.txt FileTwo.txt
but since most utilities are designed to do one thing, and one thing only, most tools _cannot_ do the work of other tools. Thus, for a selective recursive delete, you'd do:
find . -name "*foo*" | xargs rm
instead of some kind of modified
del *foo* /something /else
That way, the other two pieces of infrastructure, the find and the splitting of the final path into reasonable sizes are handled by independent programs (find and xargs, in this case), and not redone by each programmer in his utility.
I fail to see the flaw here.
Mike on October 1, 2007 08:22 PMI currently have 202 Firefox windows open. No problems. I would open more, but I got bored. Performance of Firefox is a little slower, but still very usable, and Other applications are behaving quite normally.
This machine is less than 1.8Ghz, and has only 512M of memory. No special tweaking required.
I am on Linux, though, and that may have something to do with it, but I am running the nice big pig known as KDE along with a media player, and a couple of editors.
Windows, although it is easy at the basics, quickly becomes difficult and unstable as you reach the edge cases. Also, although you have to touch things more often in Linux, they are better documented, and simpler to do when you do.
Just for the record, the only thing like that I have done at all on this system is that I added repositories to my software sources to make it so that I can install things in a nice lazy way. No horrendous registry editor, just a simple GUI where I had to enter the URL of the repository. I guess I could have been bold and copy/pasted it into a text file.
Grant Johnson on October 1, 2007 08:24 PMFor the curious, 51 windows in IE6, and attempting to open a new one just gave me an error beep. No problem closing them or anything.
Dave on October 1, 2007 08:58 PMI won't go into much detail, but...
I opened 1116 tabs of HP.com just a while ago
Firefox's memory usage jumped to almost 1.5GB, I force quit Firefox after 3 minutes of waiting for tabs to close.
I have an Athlon 64 X2 6000+ @ 3GHz.
I have 2GB of ram, and a 4GB page file.
Not sure if this matters, but I also have an 8600GTS.
Limits will come and go, and some limits seem unreasonably high, like the NTFS theoretical size limit of 16 EiB minus 1 KiB. We will come out with a newer hard drive technology that will be faster and have a higher capacity, and reach that limit eventually.
Matt on October 1, 2007 09:00 PMThanks Jeff! I run into this problem on a regular basis and it's quite frustrating.
The biggest problem in IE for me has always been how right clicking to "View Source" so often just stops working. I so often have to open FireFox just to view a page's source.
Drew Johnston on October 1, 2007 09:04 PMThe single allowable Firefox.exe process actually has some other drawbacks as well. I regularly at work have my gmail open in Firefox, but do all my testing within IE 6 (we can't internally deploy 7 due to an old intranet application that uses data islands.). Why? Because opening up a new instance of IE gives me a blank, brand new set of session cookies. This is opposed to Firefox where, if I want to simulate starting up a fresh session in my web application, I need to close every Firefox window and tab and then open it up again.
In short, blah.
John Christensen on October 1, 2007 09:47 PMReaching 50+ tabs is very normal for me, if I am using google reader to browse through my "news" folder (reddit, del.icio.us, lifehacker, etc.). I usually just skim articles and open the pages that look good. Only after I am done, do I go back and read all the open windows. It seems to save quite a bit of time, although, without tabs I'd be dead.
nordsieck on October 1, 2007 09:47 PMJeff:
I’ve had over 200 tabs open in Firefox. Btw,
> This is the kind of low-level OS tweak I'd expect to perform under Linux,
All I can say is, “Comedy gold.”
Aristotle Pagaltzis on October 1, 2007 10:12 PMJeff: you should really think twice about telling the world about how many tabs/windows you open. This is a serious mental condition that you need to address right away...
Steve on October 1, 2007 10:32 PMInteresting post. I usually have 30-40 tabs open at a time. Visit popurls.com, ctrl+shift+click on the interesting links, and voila, I have a reading list for the day. (In addition to standard pages for email, web stats, personal googling).
I find it easier to see a page of results (i.e. google hits), open a bunch of them in tabs, and go through the results. If I don't like 'em, ctrl + w closes the page. There's no back and forth.
Lastly, I use Opera! It handles tabs with ease and is super fast. I used to be a firefox devotee but it's just too slow, bloated and memory hungry. It's maily used for web debugging now (Firebug + Web Developer Toolbar).
Kalid on October 1, 2007 11:21 PMInteresting post. I usually have 30-40 tabs open at a time. Visit popurls.com, ctrl+shift+click on the interesting links, and voila, I have a reading list for the day. (In addition to standard pages for email, web stats, personal googling).
I find it easier to see a page of results (i.e. google hits), open a bunch of them in tabs, and go through the results. If I don't like 'em, ctrl + w closes the page. There's no back and forth.
Lastly, I use Opera! It handles tabs with ease and is super fast. I used to be a firefox devotee but it's just too slow, bloated and memory hungry. It's maily used for web debugging now (Firebug + Web Developer Toolbar).
Kalid on October 1, 2007 11:22 PMSorry about the double comment -- in a delightful bit of irony, my beloved Opera decided to hang a bit while submitting.
Kalid on October 1, 2007 11:26 PMAs far as I'm concerned, the maximum amount of data anyone should ever store in Windows registry is exactly zero bits. But on a more serious note, I rather disagree with the claim that the limit on the number of threads is not an issue.
The article linked by Raymond Chen on that subject claims that having a thread for each client doesn't scale well in a server. But having one thread or process per client is exactly the right model for serving multiple clients.
What the server is doing per each client usually looks something like this in pythonesque pseudo-code:
while(connected):
msg=socket.recv()
// ... carry out the request
socket.send(response)
This is sort of code would be quite elegant and easy to understand, but the implementation of OS threads and their scheduling forces programmers into much more complex and inelegant solutions that might look something more like this:
while(running):
for client in client_pool:
if (client.socket.available()>0):
client.handle()
Here client.handle() emulates the above per-client thread. This gets very hairy very quickly if serving a request involves more two way communication, since then these client objects, which are really just bad implementations of threads anyway, must actually be able to yield their execution, while waiting for communication. This is very bad, since now the programmer must consciously collect and manage all the variables that make up the thread state, a task more suited for a compiler and a garbage collector.
To conclude, if a program cannot create a thread/process for each client, or any potentially parallelizable task for that matter, out of fear of running into OS limits, the problem is probably not with the design of the program, but with the runtime environment. This is especially an issue, if we wish to take most out of multicore processors. It should be up to the programmer to say how the program can be parallelized and for the computer to figure out how to schedule the parallel tasks.
One can contrast Windows threads with Erlang processes. According to Wikipedia, an Erlang process weights 300 bytes at minimum and there can be millions of active processes in an Erlang program, instead of the measly 2000 threads.
Flaky on October 1, 2007 11:29 PMI'd like to chime in on the idea that having dozens and dozens of tabs open is perfectly sane behaviour. In addition to the uses already mentioned above, I use the Linky exension in Firefox to quickly select a bunch of links and open them in tabs.
Compare:
1) open page, wait, read (repeat n times)
2) open one page (in tab), wait, open 40+ pages in tabs in one fell swoop, read first page. READ OTHER PAGES WITHOUT WAITING.
Sure, it maxes out network and sometimes CPU. Meh. I'm reading at that time anyway.
Also, I use this large-whack technique as an antidote to Bad Interfaces, such as browseable repositories of stuff that force a user to go through short page after short page, typically with long loading times inbetween: select the list of links in the index, open them all in tabs, then scan through them.
In a nutshell: when treating tabs as page preloading mechanism, getting up to a large number of them is normal.
Schmolle on October 1, 2007 11:33 PMThanks for this post, I find it fascinating to consider the limits of common OSs and applications. I thought you might be interested to hear some stats from the other side of the fence.
I was able to open 100 windows in Safari 3 (Mac OS X 10.4.10) in a little over a minute, with no noticeable degradation of performance. My MacBook Pro has 2GB RAM and a 2.16GHz Core 2 Duo.
Interestingly, Expose was perfectly able to render 100 windows in under a second, and snapback was instantaneous.
I wonder how Safari for Windows fares? Hang about, I'll just open Parallels and check...
Try rm * in a directory with a lot of files, and you will run into the command line length limit pretty fast as well.
Wouter Lievens on October 2, 2007 12:55 AM"I don't think having 47 typical web pages open, spread across a couple instances of Internet Explorer on my three monitors, is so unreasonable."
Wow. You don't??
tabbinghorror anyone?
izb on October 2, 2007 01:41 AMGood post, you are an amazing writer. I like that you are a windows user, but are still critical with how windows is working for you.
For me, Windows XP is a satisfying experience, I get the job done, thought I complain more and more about it. Maybe because I have worked with dos/windows for so many years I don’t get into the hype.
When I complain and sound like some old Uncle Scrooge about why I cant do this and why windows wont do that. People tend to say that it is because I don’t understand how windows is supposed to work. But hey IE7 got tabs, vista got instant search, vista got better terminal, etc..
Reality is that Microsoft has like so many other OS creators made a lot of limitations/mistakes before. 640k was not enough, 8 character file name was not enough, mouse navigation is not the best for everything and so on.
So maybe I don’t need to do 65536 controls, but I sure do know a lot of things that I can complain about with windows. And that is the peril of trying to satisfy everybody as Microsoft does.
RE: "the maximum amount of data you can store in the registry"
There was an interesting post on the WorseThanFailure forums pointing out that Microsoft apparently use a 174KiB registry key to store the entire Office 2007 EULA text in Base64!
http://forums.worsethanfailure.com/forums/thread/131639.aspx
Does the solution by "The Geek" make this post mute? In this case you *did* run into OS limit and as far as I can see , there was no "design flaw" or unjustifiable demand by you as a user .. what am I missing?
Hmmm on October 2, 2007 03:17 AMYou can absolutely open more than one Firefox process.
1) Create new firefox profile.
2) Create new shortcut, append "-P Profilename -no-remote" to the end of the shortcut.
3) Enjoy!
I have a "webdev" profile with all my development tools like Firebug, a regular profile, and then a clean profile without all the extensions. I use all of them daily.
The Geek on October 2, 2007 04:02 AMWhy would you ever need 47 tabs open? I think you are in serious need of re-looking your browsing habits.
Mattkins on October 2, 2007 04:44 AMer...... is it reasonable to expect an OS to handle 39 instances of Internet Explorer to run simultaneously? - I would suspect this is messy bedroom floor type of browsing.
If you want to have the best browsing experience, do not be a sloppy surfer - there is a history and favourites for you designed to help you find that page you were looking at 2 minutes ago.
Given todays powerful PC's and rich environments, if you're running into OS limits - you're not using something in the way it was designed to be used.
About engineers...
We are ALL engineers; software development is an engineering discipline and should be treated as such.
Proper application of engineering principals results in better, more stable software systems.
That is why I think the terms programmer and developer or misnomers, we are all Software Engineers.
Mac on October 2, 2007 05:00 AMI've run into this limitation many times, still on my new 4GB Windows XP machine.
I've installed the heap monitor and found I'm at 70.7% usage!
I too like to open up many IE windows for things I'm researching or checking, plus Visual Studio, Source Control, code generator, SQL Enterprise Manager etc... :)
I've tweaked my registry, so he's hoping it'll be the last time I run out of memory!
Peter Bridger on October 2, 2007 05:01 AMI can open 153 firefox windoes - no problems so far - xpsp2, 3GB ram
Steve Bolton on October 2, 2007 05:13 AMRe the Firefox killing all tabs when one dies.
I've had a few times where Firefox has crashed on me (bad computer, not bad firefox). When you reboot and start up Firefox again, it will come up with an error message saying something like "You were in the middle of a session that terminated incorrectly". You can then restore the session. It will usually not crash again (at least in my experience), and you will be able to continue as if nothing had happened.
However, IE7 I am almost completely unfamiliar with. I find I prefer the Fox's system and the whole having tabs a couple of years earlier than IE certainly won me over from IE6.
Just 2 cents worth of advice... bear in mind that you got what you paid for (which is nothing!)
Wes on October 2, 2007 05:16 AMI'm ususally the biggest geek in the room, but sometimes, people put me to shame.
50+ web pages open simultaneously? Really? That has got to violate some sort of Pragmatic rule of thumb. I can't imagine there's a productivity gain there.
I've actually been thankful for the IE window limit. In the days before pop-up blockers and "allow scripts to.." options you could too easily stumble across a wayward site that opened pop-ups that opened windows that opened pop-ups that opened windows and so on until IE finally crashed. I've also worked on projects where someone misplaced a window.open() call and well, you can figure out what happened..
On a related note, I cleaned a family member's PC that was horribly infected with spyware. Every IE launch spawned dozens and dozens of windows until things started crashing. Although it rendered the PC largely unusable it may have prevented further damage.
Hugues on October 2, 2007 05:38 AMI think everyone reading this blog is at least a power user and/or developer. (47) open tabs in IE is quite absurd, ever with a (3) monitor setup. You have to consider the usability factor at this point also, I mean how small are those tabs by the time you've opened, say (20) or more??!
FusionGuy on October 2, 2007 05:45 AMJeff,
A recurring theme in your blog is the number of windows/tabs/instances you have open. The problem is that you're using Everyman software (easy to learn and does the things most people want (and free, to boot)) but doing Uberman tasks. Just like you wouldn't use Notepad to program million line software projects, you shouldn't use other Everyman software to do other Uberman tasks. Everyman software works as designed for 99.9999% of the people. For the people in the far tail of the curve, you'll just have to find (or write) some software that's more difficult to learn but provides options that meet your needs. Unfortunately, since I'm just an Everyman (rarely more than a handful of open tasks at any given time), I can't point you to anything useful.
David A. Lessnau on October 2, 2007 05:59 AMI don't see the need for 10+ webpages open at once...but it would make sense, if after some limit was reached, only the url was stored and the page was released from memory.
Joe Beam on October 2, 2007 06:28 AMJoe: I don't think that that would be such a great idea. If the page is driven entirely by a query string, then this would probably not be an issue. If the page is driven by a Session, Viewstate, or other dynamic factors, your solution would likely destroy those factors.
Sean on October 2, 2007 06:46 AMI'm currently at about 400 open pages in Opera. It's not really useful, but when the browser can handle it, it's very easy to stop using things like bookmarks and just never close a page you know you'll want to read again. There are times when this is genuinly useful, though -- when presented with something like an online photo album, I can open all of the photos at once, wait a few seconds for them to load, then flip through them with no delay. It only saves two seconds per picture, but as I'm sure Jeff has mentioned at some point, there's a huge difference in how responsive and unfrustrating a program feels between two seconds and zero seconds.
Thomas on October 2, 2007 06:54 AMI have to say it. Internet Explorer6/7 is nine years behind web standards. Don't use it. Use Firefox, Opera or Safari so we web coders can start using modern techniques for everyone.
Rob on October 2, 2007 07:01 AM"A limit of only 47 tabbed web pages open at any time under Internet Explorer 7 seems artificially and unacceptably low to me."
Everybody has their quirks. This one is yours. No one person needs anywhere near this many web pages open *at the same time*
Just like your last rant about tabs - it's just you.
Brad on October 2, 2007 07:16 AMIf you have so many tabs on your IE tab-bar or so many apps on your task bar that you can't read their titles without mousing over for tool-tips you have too many open!
Jason Stangroome on October 2, 2007 07:33 AMAll this talk about pushing OS limits and making better Alt-Tab behaviour and adding incremental search... this is a meta-problem that you've created yourself. Since you're familiar with TDWTF I assume that you've probably read The Complicator's Gloves:
http://worsethanfailure.com/Articles/The_Complicator_0x27_s_Gloves.aspx)
There's a ridiculously simple solution to all of this nonsense and it's called "bookmarking links you want to visit later instead of opening them now". It takes 3 seconds to create a bookmark folder called "Blog post 2007-10-02", and when you right-click a link, go to "Bookmark this link" or "Add to favorites".
The cringe factor in the posts about these browsing habits is very high for me. Higher than Joel's "Wasabi". One minute you're talking about the need for better usability and ergonomics, and the next minute you're telling us about about a setup that would make even the most hardcore code monkeys cry. I have to concur with the other readers telling you to get yourself organized; it's a miracle that you're able to get any work done at all this way!
Aaron G on October 2, 2007 07:43 AM>Unlike IE, Firefox only allows one Firefox.exe process, ever. This clearly helps it scale better. But there is a downside: if any web page crashes, it will take down the entire firefox.exe process and every other web page you have open.
That's why with every computer I run, has Firefox with a Session manager, and allows me to restore any closed tabs or windows, and if I open a browser window.
It prompts me if I want to open the last websites I've visited, and it will even save any information I've put in on that page.
Say, For Example; While I'm buying cocaine with paypal. If the police come by and try to arrest me, I can close my browser, then re-open it later and all my credit card information will still be open for identity theft! ^_^
Actually, it'd be a bit more precise to speak about Windows limitations rather than OS-limitations.
At the moment i hava more than 150 firefox windows opened on mac os X... and i really get bored of instanciating new ones... window manager don't even slow when i move one of those windows...
MSWindows is so funny. The Vista aero kick is great too. Very productive system !
But Jeff.. you have to remember this is the Windows team you're talking about here. Sure they've created marvels like Windows '98, but they've also created horrid piles of cow shit like Windows ME and, of course, Internet Exploder. They don't test things with a heavy data load because they don't expect anyone with half a brain to use what they give you.
Sean on October 2, 2007 08:47 AMThere have been times where I've ended up with several hundred tabs open in Firefox. Either in one instance or across several. How it affects performance is really a function of the types of sites that are open. Usually, when I've seen the CPU pegged or RAM just eaten up, it's because of javascript or flash running on the pages that are open. Adblock helps a lot with this. Another reason is images, as they are easily the densest portions of the web. And none of these things has to do with the browser itself.
WaterBreath on October 2, 2007 09:00 AMHere's the thing, you might be able to open more windows with firefox, but i bet you can leave all of the ie windows open and not have the program crash, where eventually, because of memory leaks, the firefox one would probably die within an hour.
Darren Kopp on October 2, 2007 09:10 AMJeff,
I believe the limitation you are running into on IE is related to its use of window controls. Firefox, OTOH, creates and manages all of its controls, including the application menus, and therefore only has one window control (the window frame itself). IE has gotten better. Thankfully, they stopped using window controls for drop downs in IE7. That was a huge annoyance for DHTML developers as you could not z-order other page elements over the drop down since they were in different domains (IE painted control versus a window control). I believe that iframes are still window controls in IE7 and there may be other elements that are rendered using window controls in IE of which I am unaware.
kbiel on October 2, 2007 09:34 AMThe flip-side to all of this of course is that as developers we should be careful to set hard-coded limits very high. As recently as DOS 5.0, the PATH environment variable couldn't be any longer than 256 characters. It was all too easy to hit that limit and you'd find yourself having to rename directories with shorter names, e.g., Bin instead of Programs, Prj instead of Projects.
Dave C. on October 2, 2007 09:37 AMSince you are a developer and were able to find a work around, I don't see this as a problem. And for the average user who might not find this work around, I have yet to meet one that has come remotely close to reaching this limit. Besides, with 64-bit computers becoming standard it will be a moot point soon enough.
james on October 2, 2007 10:40 AMBTW, there still is an operating system limit on the number of GDI objects per process: 10,000. While that seems like a lot, some controls (the new "ribbon" comes to mind) use quite a lot of them. This might lead to issues when having a lot of Word 2007 windows open. Has anybody run into any issues with that?
martin on October 2, 2007 11:13 AMI copied a large folder of files into another local folder to test deleting the files with a powershell script and ran into this:
"Get-ChildItem : The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters."
I found the one file that was causing the problem, it was a PDF in a location with a combined path/file length of 262 characters. I couldn't open the PDF, Adobe said "Access Denied." When I attempted to get the properties of the file everything was blank. I didn't attempt to create another file in this folder, which may have been prevented by Windows XP SP2, but it did let me copy the file into a location that resulted in a path and filename that is too long. Although I could not delete the file from Explorer by right-clicking, I could delete the parent folder and the file went away.
Every OS has a limit on maximum file name length, for good reasons.
Bratch on October 2, 2007 11:26 AMHello,
I can open 74 firefox tab at once on Vista without any issue.
Mathieu CHATEAU on October 2, 2007 11:54 AM"Since you are a developer and were able to find a work around, I don't see this as a problem. And for the average user who might not find this work around, I have yet to meet one that has come remotely close to reaching this limit."
That is a very dangerous assumption. I know a lot of people who are "power users" who aren't developers. They're also the most vocal of the people, because when they find a problem they don't solve it themselves, they tell other people who know how to solve it (the developers). And if those people don't, then they will tell people the flaws.
[This does, of course, refer to problems that require programming or similar to solve. This one doesn't, but the assumption in and of itself is dangerous]
I run into this regularly. In my case, it's from having Eclipse + 20 folders open + Firefox + 10 text files, etc. I run out of "something", and then my context windows don't have all the options anymore, and sometimes folders won't open. No errors, just missing stuff. I have to close stuff to get it working again.
(This is notwithstanding the limit to the total number of folders you can have open in XP.)
smackfu on October 2, 2007 12:46 PMI am continually amazed at the number of posts here that can be thusly summarized:
"Windows (or IE) really causes me a lot of pain. In fact, it impedes me doing my job (or blog) well. I wish there were a solution. I mean, other than switching away from Windows (or IE). I'm not crazy, you know."
In this particular instance, the question becomes: why not just use Firefox instead of IE for most browsing? Then IE will continue to suck, but you won't care because you rarely use it.
The larger question is when you will just make the jump to a more productive platform overall.
RG on October 2, 2007 01:22 PMFunny, seems like with Firefox and a few other things open I would get three or four tabs and things would get very, very slow. My wife, who does project work for several clients has even more. I just wonder what the tests looked like at Microsoft and Mozilla. I mean, would they ever have thought someone would have ten tabs at the same time? I guess users are constantly pushing the limits and doing the unexpected.
TJ on October 2, 2007 04:21 PMI am continually amazed at the number of posts here that can be thusly summarized:
"Jeff, you're a hopeless [geek|moron|ADHD case]. 49 IE windows? Get help."
Here's a clue: Jeff's browsing habits are not the problem here. *Windows* is the problem. As the testimony of Linux and OS X users shows, Vista's limits on simultaneous browser windows are arbitrary and unnecessary. And many other posters here have clearly described work habits that are both effective and make good use of simultaneous open browser windows and tabs in the high double digits. Who's to say they shouldn't be doing that? It's a concept right out of HCI 101: Whenever possible, the tool should adapt to the user, not vice versa.
Alex Chamberlain on October 2, 2007 05:30 PMProfitable companies follow the money.
Microsoft is a profitable company.
Therefore Microsoft follows the money.
Not the rantings on blogs about how some edge case is "unreasonable".
Noone at Microsoft will care, until caring affects the company and their boss tells them to care.
Instead of fixing a limit that a tiny minority of customers care about, they will do what will make more customers give them more money.
A massive shift over to Firefox will make Microsoft sit up and take notice. Therefore the solution is not to whinge and grizzle - but to vote with your feet, or at least with your browser selection.
Until it matters, Microsoft has a list of a hundred thousand things that people want fixed, and doesn't have enough people to fix them all tomorrow - so they will prioritise.
Welcome to a capitalist society.
Bob on October 2, 2007 09:00 PMFirefox will open another firefox.exe if you set up another user and a shortcut that tells it to start with that user. A bit obscure, I know, but it's true of all the Mozilla-based browsers.
What annoys me about FF, as a developer, is that if I need an admin user and the ordinary user on my website I have to do this. The IE way is more developer-friendly in that you can just kick off another IE process and log in again using a different cookie. I've learned to live with it, and use IE for the user and FF for the admin.
I still think FF beats other browsers hands down for development because of tools like firebug, web developer and the javascript debugging tools, which are all free plugins that work really well, and make debugging Ajax possible. I don't have to spend lots of cash on MS tools to do my job ... but that's a different argument.
Francis Fish on October 3, 2007 01:11 AMIntriguing post. The limits of computer's operating system and software can be addressed by some genius out there. But what about the limits of Brain Operating System? How many items can your brain juggle within a certain period of time? I don't want to criticize anyone's work style, though. :-)
It is interesting to note that Nature has come up with an elegant way to handle information overload: the brain automatically forgets information of lesser importance. That's right, forgetfulness is not a bug, it's a feature. This is the equivalent of automatic closing for tabs that are low in your priority. Hey, maybe somebody can come up with this feature in Firefox? I want one! (I know, build it yourself) :-)
Multiple instances is easy in Firefox with multiple profiles:
http://www.ecgroves.com/blog/archives/multiple-profiles-in-firefox
I run into one Windows OS limitation regularly when building with Team Build: The maximum length of a path (260 characters). Because Team Build/MSBuild seems to use absolute paths everywhere, if our sources tree is nested more than 3 levels deep with descriptive folder & file names, the build comes crashing to a halt for some files with long(ish) filenames. And this for a limitation that comes straight out of the DOS era!
So I do need to ask what the OS limit is, when my only fault is being a build manager on a microsoft platform. Grr
Niels on October 3, 2007 03:02 AMThis problem should not exist in x64 Windows. Given that as the direction computing is moving, Microsoft probably won't care to fix this problem. It really is a in-built architectural decision in Windows from NT4, so it would take some significant reworking to fix... just letting AMD/Intel fix it automatically with a larger VA space is a path of less resistance.
nksingh on October 3, 2007 05:43 AMFlakey is a poor or inexperienced programmer if he doesn't realise their are limits to everything, and the answer to those is to blame the underlying OS!
-- "But having one thread or process per client is exactly the right model for serving multiple clients."
No, its the *easiest* model for client-server apps, but in no way the most efficient. For example, the company I work for has a product where each client has a db connection. Trouble is, oracle uses about 2Mb per connection (for caches, recordsets data, client state info etc etc), so that means we can support about 500 users before the server runs out of ram (don't forget the OS, Oracle itself and its sql caches all require RAM too!). If you look at the usage pattern of the clients, you'll see that at any given time about 15 are actually using the database!
So it is way more efficient to put a server or two in the middle that multiplexes the clients and only creates 15 DB connections. The DB will go a lot faster if it doesn't have to handle all those client connections, and the clients will fetch their data faster because the DB is spending more time doing DB work than it was handling connections.
Its the same with Erlang. Sure it has pseudo-threads that only take 300 bytes of Erlang resources. But then you start doing things with those processes and they take up more and more of the computer's resources.
Its also the same with GC languages, they handle memory well, but the are useless with other resources. If you don't handle object lifetimes yourself, you will start to see your application crashing out as it uses a more limited resource (eg GDI handles in Office's Ribbon) without releasing it quickly enough, a problem that only gets worse as you increase the amount of memory available.
I find it very bizarre to think about Jeff's (and others') browsing habits that necessitates the opening of 50+ browser tabs or windows.
In any other circumstance, eg if we were contemplating software design or UI issues then we'd probably all conclude that the model is broken, and we should come up with a better design. If our development process required us to create 50 concurrent SCM branches then it suggests we're not doing something right.
Surely, if you feel there is a need to open so many browser windows that you're running into system limits and having problems navigating between them, then suggests there's something wrong? What happened to the usual "7 plus or minus 2" for bits of informatin that you can usefully deal with at the same time?
To recap the opening quote: "If you have to ask about the maximum ... then you probably have some rather serious design flaws in your program." Replace 'program' with 'habits'.
Why so many pages? Are they there as reminders for articles you've yet to read? Are they clusters of related content? Are they tangents for interesting-sounding links that you want to read, once you've finished reading the main page?
Don't we normally ask "What's the problem you're trying to solve here? "
For instance, I do find myself accumulating a number of tabs of things that sound interesting that I must read later. Once I hit a threshold I create a del.icio.us bookmark with the tag @ACTION or @TO-READ that I can come back later (the '@' system comes from David Allen's excellent Getting Things Done). So I modified my habits to come up with a usable solution.
What might the solution be for other models of browsing? Is there a better way of representing history in terms of branches? Or a stack? What about clusters of related pages? In terms of the UI: how do I navigate between these many pages? By zoomable UI, text search, etc ? (as mentioned in previous articles)
the_mandrill on October 3, 2007 06:34 AMMy god there are a lot of stupid nerds posting here. I bet most of them haven't exited their basement caves and encountered Other People in years.
People are different. Different people think differently. Different people work differently. Different people do different things. Just because you never have a need to use more than program/window/tab/computer/whatever at a time, don't be a presumptuous, self-righteous idiot and presume that people who DO NEED IT are insane. Hell, maybe YOU are the one who's taking a productivity hit...
Ahem.
That said, there are an awful lot of retarded OS limits in all popular platforms today, given that it's 2007 and that an awful lot of people are rubbing up against those limits (presumably since all the modern OS's are basically continuous evolutions of 70's designs?).
My point being that Raymond Chen's original posting, while based on a kernel of truth, sounds like an apology for an outdated design that doesn't meet today's needs and usage patterns, and doesn't scale to today's hardware. I see people have made similar points in his comments.
For instance, I'm sorry to those whose heads will explode at the thought, but in 2007, a 260 character maximum path and filename length is a DESIGN DEFECT. It's an arbitrary restriction based on decades-old hardware that screws over people around the world EVERY DAY.
yipyip on October 3, 2007 08:24 AM>In 2007, a 260 character maximum path and filename length
>is a DESIGN DEFECT.
yes, well Windows itself doesn't actually have that limitation.
ulric on October 3, 2007 09:14 AMThe filesystem path length limit is definitely a painful one. If you're wondering who to blame, I have a blog entry on the filesystem path limit which goes into more detail.
http://www.codinghorror.com/blog/archives/000729.html
Jeff Atwood on October 3, 2007 10:29 AMOpera is a better browser.
Andrei Rinea on October 3, 2007 01:09 PMI've opened 528 FF tabs before without problem.
MonkeyHood on October 3, 2007 02:30 PMFour words: Zero-One-Infinity Rule.
http://www.catb.org/~esr/jargon/html/Z/Zero-One-Infinity-Rule.html
Atario on October 4, 2007 03:13 PMAndyB wrote, '<i>No, its the *easiest* model for client-server apps, but in no way the most efficient. </i>'
I think that you missed my point. The process-per-client model is, IMO, the natural model. This of course implies that it is the 'easiest' as you put it. That you cannot use this model because of system limitations implies that the framework hasn't been thought through. In other words, you have to work around this issue every time when developing this sort of software, instead of having the problem solved once in the framework.
In any case, my main objection was to the thread limits (which likely are unavoidable on stack-based, no-GC environments), not specifically in the context of client-server applications. A GC, with the help of the compiler, is quite capable of figuring out what bits and pieces of memory should be retained. Thus, a process-per-client program written in a language such as Erlang, won't run into memory limits any more likely than an object-per-client program that runs in one thread.
Sharing other resources is a problem that is not (completely) solved by GC (even memory leaks are not entirely preventable by GC), but even though there's no silver bullet, we shouldn't keep working with primitive and inefficient (in terms of developer effort) methods and tools.
I have had ~100 tabs open in Firefox, but on the Linux version, without problem. Might try it under Windows...
Renan "Renan_S2" on October 5, 2007 08:35 AMIf you're doing something so big that the operating system limits won't let you do it, then you're doing something wrong.
Suppose you try to work around it.
If you're doing something so big that the operating system limits don't want to let you do it, but you find some other way to do it piecemeal so the operating system doesn't stop you, then what are you doing? You're still doing the same thing you were doing a minute ago, so doesn't that mean you're still doing something wrong?
Not only are you doing the same thing you were doing a minute ago, but you're adding complexity to it. It was too much to start with, now it's more too much.
x86 doesn't let you use enough memory to do what you wanted to do? You're doing something wrong. x64 lets you use enough memory? Whatever wrong thing you were doing, aren't you still doing something wrong?
Don't ever get a small cancer. Low resolution medical images won't be able to show it, because it's too small. High resolution medical images won't be able to show it, because in order to show it, programmers would have to do something wrong. You'd better stick to big cancers. Low resolution medical images will show those without doing something wrong.
Inquiring mind wants to know on October 8, 2007 10:00 PMI was reminded of the Y2K problem today. It violates _two_ rules. One is that it came 48 years too early. The other is that it pushed a limit. If you need more than 2 digits for a year, you're doing something wrong.
Inquiring mind wants to know on October 11, 2007 05:52 PMHi Flaky.
I know where you're coming from - a language should provide tools to make things easy for the developer, and to a point you're right. However, often this is too idealistic for the real world and we still run into walls that just cannot be gotten around. Some languages intended to make life easier for the programmer (eg Java, C#) simply put new walls up!
WRT the process per client model, you still have the limits that these use limited resources, no matter how lightweight the process is, its dragged down the the network connection, or the database connection etc. The only way to solve this is to share the resources out amongst them, in which case you've shifted the bottleneck to a more abundant resource - eg, if you multiplex incoming network connections, you now find that you just don't have enough memory or CPU time to service all the processes.
In such cases, you get better scalability by sharing that resource too - eg. you don't need to keep all the processes around, you swap them to disk (or persist them to the DB).
And now we're back where I started - working in a client per object model, where resources are used on an as-needed basis.
Perhaps its easier to think of a word processor. You could say that 1 object per letter is the natural choice, but you'd be crazy to try and implement it. Instead you create 1 object for any given letter and re-use it for each letter you currently work with.
Very late to the party, but I'm reasonably sure Matt's assertion about "2000" ports is inaccurate.
MaxUserPort is the random-port-binding limiter, and it's set for 1024-5000 before Windows Vista (in Vista, it's something like 65534-61000).
This provides about 4000 ephemeral ports that can be used for (whatever); there's a registry value called MaxUserPort that can be used to up this value if you really do need to make more than 4000 concurrent outbound connections... (and suddenly, we're back at the topic of the post again...).
If you're seriously socket-happy, MaxUserPort can be combined with TcpTimedWaitDelay (from memory, could be TcpTimeWaitDelay), which (predictably) sets the time a socket lingers in TIME_WAIT after use (i.e. before it can be used again).
I use Opera when I need to do serious web browsing: http://exold.com/article/speaking-of-opening-a-lot-of-browser-windows
When I want to avoid chances of distraction, I stick to IE, because it'll die fairly soon, so I'll remember what I'm actually supposed to be doing....
David on October 23, 2007 09:57 PMI used to develop applications using Visual Basic 6 and there was one time I could not add controls anymore to one of the form I'm creating.
JCNV on November 1, 2007 08:20 AMThe most annoying limits i'm pushed into is max number of GDI handles. I do surfing with 120-150+ tabs in Firefox (and about 200 in Opera) usually, and got black icons/windows redraws errors on Win2003 server as well as WinXP. Things get worse when I open Opera and Firefox simultaneously, and/or start some .NET/Delphi apps, which pushes to the limits. And/or open 20 apps..NET/Delphi apps seems much more hungry for those, so I avoid to run many of them. Registry tweaking didn't help (max 20k GDI handles is too low too).
Opera works fine after tweaking options (no favicons).
Linux works well, though i got another limits when free RAM is about to over : black windows in beryl (nvidia driver bug), lagging windows redraw. Though overall Linux+local proxy like squid works exceptionally well for surfing/researching.
Vista maybe will work fine too, though i'm unhappy about it's so hungry for RAM. So i'd better stick with Linux.
Dima on November 19, 2007 09:12 AMI've been having this issue and it's been driving me nuts. Not the 47 window/tab in IE, but that it seems to forget that some tabs or windows have been closed, so with only a dozen open I can find myself being unable to bring up right click menus etc. It also seems to apply to ALL programs, not just IE, and seems to be hitting a system limit, when IE hits it OTHER programs can't open windows.
Closing a tab/window or two usually restores the functionality, but you might close 6 windows, and then can only open another 2 before you seem to hit this 'limit' again.
Rodrye on April 7, 2008 10:50 AMRight now, I'm running up against two limitations in Windows XP (sp2):
- 65K or so limit on the number of nodes in the Micro$oft treeview control. There's a lot of stuff in the Windows registry under HKLM\Software\Classes\Interface, and REGEDIT.EXE's treeview just gives up in the area of the ones named {10...} and gets wonky after that.
- REGEDIT.EXE can export a string key that contains a CR and/or LF character into a .REG file, but it won't put any text in a string value if the .REG entry has a CR or LF character in it. So, I have a .REG file I just exported from REGEDIT that REGEDIT won't import properly.
BTW, if anybody has an idea about:
- a better REGEDIT tool
- a patch or fix for Microsoft's treeview control limitation
- a way to put the CR/LF back in the registry from a .REG file (without writing my own .EXE)
then please don't be shy.
Thanks!
Jeff J. on June 4, 2008 03:17 PM| Content (c) 2008 Jeff Atwood. Logo image used with permission of the author. (c) 1993 Steven C. McConnell. All Rights Reserved. |