Reliable realtime applications on .net? No worries! We’ve been last two weeks making a framework that helps us reduce time involved in Garbage Collection when using the Microsoft .net framework to build realtime applications. Our framework integrates a very advanced object pooling system that allows us to allocate and dereference memory at runtime, at almost zero cost and without any noticeable pauses. This is possible thanks to a combination of technologies:
We’re using a dedicated low priority thread that monitorizes memory used by the .net garbage collector and calls appropriate collect methods and memory pressure methods when the application is not spending time on other threads and this can be done in a non blocking way.
This system also provides some very easy to use classes that provide a built-in object pooling mechanism that makes it easy for memory to be reused instead of being free and allocated again. This reduces memory fragmentation and speeds up a lot object (simulated) allocation.
This system allows the generational garbage collector of mono (and Microsoft .net) to work with enough memory “headroom” in most cases, providing a pause-free execution of applications that are properly designed with sparse usage of this framework.
We’ll be integrating this framework on our commercial products soon, so if our research and design confirm what we’re seeing on benchmarks, you can expect to see a very noticeable performance improvement both in Jungle Ide and BLIde soon.
This development is part of our attempt to provide better generics support on Jungle Ide, as we want to provide a full functional realtime parser for complex Monkey code projects. Stay tuned!