5 ms·
Garbage Collection is not per default something bad, even in game development, its a method of memory management, just like reference counting, or manual memory
by walkingolof 8y ago
Garbage Collection is not per default something bad, even in game development, its a method of memory management, just like reference counting, or manual memory management.
If you are allocating memory in your renderloop, your likely doing it wrong. Allocation outside of this critical path, well, chose your poison.
GC will consume more memory, but likely to be faster when it comes to allocating and deallocating large amount of small blocks.
Reference counting, if you do it properly (to avoid thread starvation), is costly. Cheap atomic reference counting, involves a calculated risk that you may have threads hanging.
Manual memory management, well, we all know the cost of that :)
That being said, many many games are today developed with Unit which uses C# as its primary programming language.
- HippoBaro 8y agoSure, you can. But then you need to manage when GC triggers. Because if you don't, you'll drop frames. And then the real choice is between C++ where there is (little) extra work getting RAII correct vs GC languages where you need to keep preventing GC up to a point where it's okay to freeze the universe.
- walkingolof 8y agoThere are plenty of predictable garbage collectors now days, Shenandoah for example, Azul's C4 implementation is completly pause-less and concurrent. ZGC provides very low pause times (1 ms)
- ulber 8y agoA clever approach for VR that was used in Downward Spiral [1] (a Unity game) is to add a periodic eye blinking effect and trigger the GC on a black screen. [1] http://www.3rdeyestudios.fi/downward-spiral-horus-station/ http://www.3rdeyestudios.fi/downward-spiral-horus-station/
- jokoon 8y agoYou can allocate stuff on the stack instead, or keep things in a game state.