今天读了一篇介绍Unreal引擎的内存管理的文章,感觉它的这种内存管理的思路在很多其它的引擎里面也能看到比如GameByro,还有我以前呆的xxxxxxxx公司的xxx引擎。
所有的obj被new的同时也会被加入到一个list中, 直到它被delete的时候才会从list中移除。这是非常有用的,它能帮助区跟踪内存泄露, overwrite和为初始化的数据结构。
另外它们的Texture resource在创建时候也会加入到一个list或者 hashMap(cache)中,这样可以避免资源被重复加载。当然根据我的理解这样能避免重复加载的另外一个比较重要因素,给予每个特定的纹理一个Unique key 比如unique的string。Unreal和我以前公司的引擎都是有个UString作为resource的key。不过似乎GameByro的resource管理便没有它们做得那么好了。