What would you do with multiple heaps?
It's one of the top 5 things that professional C++ games devs in mainstream games industry cite as "things I'd need to be able to seriously develop games in java on console". IIRC, reasoning is that an awful lof of modern games mem management is ... odd ... yet entirely predictable - textures are the most obvious example. It's relatively easy to do coarse-grained mem-management at the heap level, directed by the scenegraph and/or loading of new levels (load new level => throw away your level-geometry-heap) that is more effective than a general-purpose heap manager would be, yet cost very little in programmer time.
Not that I ever sent you my collated list of such things ( I need to cull down some 20 odd pages of conversations and anonymize all speakers
), but off the top of my head the other major ones included:
- ability to load an entire serialized chain of game-data (hundreds of megabytes) directly into memory, raw direct from disk, and use it immediately with no post-processing (console CPU's are slow. Console DVD-read performance is poor)
More enterprising and clever folk than I would probably use multiple heaps for application separation within a single VM, which would allow some seriously useful tuning of serverside applications of course. But this is a games forum and no-one cares about that except Blah^3 and Jeff
Can you *imagine* how easy it would be to find + fix memory leaks if I could have a "grexengine heap", a "3rd party modules heap", a "JDBC driver heap" etc?