Forum Discussion
Altera_Forum
Honored Contributor
17 years agoYes – after significant research, I figured out what was happening:
The problem was related to the "Desktop Heap", which is a little known aspect of Windows that coordinates the resources for all of the menus, hooks, strings, windows, fonts, and printer data that is related to the desktop ( all visible applications ). Windows allocates a relatively small fixed amount of memory to coordinate all graphical references and handles for the desktop. It doesn't matter how much system or video memory the PC has, if one or more applications consume all of the available desktop heap memory, then Windows cannot instantiate any more graphical objects. This can be due to a number of applications that are each consuming large amounts of desktop heap memory, or to a single program that has a desktop heap resource memory leak ( never releasing resources ). The available desktop heap memory cannot be viewed in any native system resource monitoring utilities, including the Task Manager. In fact, my understanding is that is not possible to ask Windows directly for the desktop heap memory status, through API calls or otherwise. Microsoft created a single tool that can show the status of the desktop heap, called the “Desktop Heap Monitor”, currently version 8.1. This utility actually installs a kernel mode driver that gives Windows the ability to report on the heap status. It is a DOS utility that I personally couldn’t get to work. The solution is to change a registry setting that increases the size of the desktop heap, which will slow down Windows some, but at least the programs will keep running. After increasing the heap size, my new quad core PC is a little more sluggish, but I haven’t seen the problem since, and now I can be really abusive and open as many programs or Quartus schematics as I want, without a problem. The Windows XP registry path is: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ SubSystems The “Windows” key has a very large string in it, that looks something like this: %SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,3072,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16 The setting “SharedSection=1024,3072,512” is what designates the size of the desktop heap. I changed mine to “SharedSection=1024,4096,512”, and that solved my problems. Information on the problem and solution can be found here: http://www.techarp.com/showarticle.aspx?artno=238&pgno=0 or here: http://www.w-tweaks.com/html/xp-desktop-heap-tuning.html or search for “Desktop Heap” in Google. The Desktop Heap Monitor utility is here: http://www.microsoft.com/downloads/details.aspx?familyid=5cfc9b74-97aa-4510-b4b9-b2dc98c8ed8b&displaylang=en I hope that helps. This has been a major headache for me for a long time. I’m glad there was a fix, even if it was totally unobvious.