|Beijer Electronics (formerly QSI Corporation)
|Why am I getting the error "Draw cache memory exhausted
|Page 1 of 1|
|Author:||Ron L. [ Wed Feb 14, 2007 10:50 am ]|
|Post subject:||Why am I getting the error "Draw cache memory exhausted|
This exception is more common in very large programs and occurs when you have ran out of available memory at run-time. A variety of data is copied into the RAM at run-time including fonts, bitmaps, firmware, the application and draw cache. Usually the draw cache is the largest user of space. What draw cache does is take the last rendering of each object and save the pixels of that rendering into memory.
The default draw cache level is ALL. Under ALL, every single object will have a copy of its last rendering cached into memory. With many large objects in a workspace your going to use a lot of memory, and there may be no way you can cache it all. This is the best option for performance.
The next lower level is ENABLED. Under this, all objects who's enabled properties are set to true will be draw cached.
The next lower level is EFFECTIVE ENABLED. Under this, all objects who's enabled properties are set to true and their parent object is enabled will be cached. Lowering draw cache to these levels doesn't usually effect performance much if any.
The last level of draw cache is OFF where no objects are cached.
You can change the draw cache in Power On Setup (see Qlarity-Based Terminal Hardware Manual) under the DCACHE setting or using the function SetSystemSetting at run-time.
func Startup ()
SetSystemSetting(SYS_USEDRAWCACHE, CACHE_ENABLED, SYSACT_DONOW)
Make sure you don't have extra BDF, TTF fonts, Bitmaps or other resources included in your workspace that are not being used because they also use extra memory.
Make sure you don't have an array growing forever in your workspace using up the available memory.
Once you've changed the draw cache to ENABLED or EFFECTIVE ENABLED, make sure you do no have screens enabled that are not being displayed.
|Author:||Jeremy [ Wed Jun 15, 2011 8:08 am ]|
|Post subject:||Re: Why am I getting the error "Draw cache memory exhausted|
I would like to expand on a couple of points here:
Draw Cache of "All" provides the best possible performance at the cost of an extreme amount of memory. This is especially pronounced on our terminals with larger displays such as the QTERM-G75 and QTERM-G72. On those terminals, it is not uncommon to experience this error, although depending on the complexity of your application, you may see it on our other Qlarity terminals. Most QTERM-G55/G56/G58/Z60/G70/A7/A12 terminals should use this setting unless you encounter problems with it.
Draw Cache of "Enabled" provides an excellent balance between speed and memory usage. It commonly uses 75% less RAM than "All", and provides virtually no noticeable speed degradation. I would recommend this setting for most G75 and G72 users.
Draw Cache of "Effective Enabled" significantly favors low memory usage over speed. In this mode you may notice slight delays switching between screens, although once on a screen performance should appear normal. Occasionally a workspace as unusually high RAM requirements or an unusually large number of objects. In those cases, this option may be a good choice. However I would only select this if "All" and "Enabled" result in "Draw Cache Memory Exhausted" errors.
Draw Cache of "Off" is not recommended. If you use this mode, you must use special care when designing your workspace to minimize overlapping objects.
|Page 1 of 1||All times are UTC - 7 hours|
|Powered by phpBB® Forum Software © phpBB Group