NOTE: An updated version of this information can be found at https://www.javelin-tech.com/blog/2018/03/solidworks-resource-monitor-warning/
Anyone who works with large SOLIDWORKS files has very likely received the warning: SOLIDWORKS System Resources Running Low.
Of course your initial response was to check your RAM usage in the Task Manager and you see the memory usage is low, so you wonder, “Why did I get this warning?”. In some cases you likely just continued to work, after all it appears to only be a warning message and SOLIDWORKS is still functioning, but then after doing some more work, SOLIDWORKS locks up and crashes. What caused this?
In this blog article, I’ll summarize the reason for this warning and provide a band-aid solution that will help reduce the occurrences of this warning, and hopefully prevent further crashing.
The Problem is your GDI Objects Limit
First point to make – this warning generally has nothing to do with system memory, it’s most likely due to the GDI Objects (Graphics Device Interface) approaching the default limit pre-defined by Windows.
If SOLIDWORKS has never crashed after receiving the “SOLIDWORKS System Resources Running Low” warning, then you’re likely fine to ignore it and continue working as this warning is triggered when the GDI objects being used by SolidWorks has crossed 9000.
I’m not going to go into detail about what a GDI Object is, but if you’re interested, Google it and you’ll find lots of information. And here’s a direct link to Wikipedia’s explanation about it: http://en.wikipedia.org/wiki/Graphics_Device_Interface
If you are crashing shortly after receiving the warning, then you are hitting the limit and Windows is shutting down SOLIDWORKS.
A solution to help solve the problem
Here’s what you can do in this situation. You can monitor the GDI Object count via the Task Manager; it’s a new column you’ll need to add via the View menu.
Once any single process hits 10,000 GDI Objects, it’s terminated. This is the default limit defined by Windows that a single process can reach.
There’s a registry tweak that can change this; a single process can max out at 16,384, while the system wide max for all processes is 65,536; edit the
registry key to change the per-process limit (GDIProcessHandleQuota) to the upper limit of 16,384; set the BASE to DECIMAL. This will buy you some breathing room.
** WARNING! – I recommend only making this change if you are very comfortable editing the Windows Registry. Accidental changes to the registry can render your system inoperable, so exercise extreme caution when making any registry edits. I strongly recommend creating a Windows Restore Point prior to performing any registry edits.
Here’s a site that explains and shows the process of creating a Restore Point in Windows Vista and 7 if you’re not familiar with this tool – http://www.howtogeek.com/howto/windows-vista/create-a-restore-point-for-windows-vistas-system-restore/
For more info on changing the registry entry discussed above, visit: http://msdn.microsoft.com/en-us/library/ms724291(v=vs.85).aspx
There is a rather lengthy thread in the SOLIDWORKS Forum that focuses on the topic “SOLIDWORKS System Resources Running Low” that I recommend your read for further info. There are also some explanations from SOLIDWORKS about how to minimize GDI utilization and also what they are doing to help: https://forum.solidworks.com/message/190940#190940