Memory management is a large part of systems programming for games. Especially on consoles where memory is a limited resource.
The main problem with memory is that there’s never enough. Modern consoles (like the Xbox 360 and PS3) have about 512MB of memory. This might seem like a lot compared to the 32MB of the PS2, but really isn’t that great compared to a PC, or the requirements of modern games. Additionally, consoles don’t generally support virtual memory, a feature of PCs which let the operating system use the hard disk as additional RAM when needed. The end result is that console games have many extra constraints and must take over the burden of managing their own memory more closely than normal PC applications.
Over the next few posts we will examine the basic memory management issues faced with console programming. In the process we will examine the goals and design of a modern game memory management system. The focus will be on how we manage memory within the complexities of a modern game development environment and how to make the best use of the limited resources of consoles.
Part One: Overview of Memory – A look at different memory types and how they are handled by compilers and applications.
Part Two: Consoles – What’s so special about consoles? We’ll look at special considerations needed for console games.
Part Three: Design – We’ll create a high level design of a memory allocation system.
Part Four: Budgets, Tracking and Profiling – So we can allocate memory, what else do we need?
Part Five: Summary – Wrapping up the series, we’ll also go over some more advanced topics for future consideration.