主要观点总结
本文介绍了作者对于内存优化方法的研究和探索,包括常见的内存优化手段如字段裁剪、结构调整、内存压缩等,以及将Lua内存下沉到C++中的实现方法和优化结果。
关键观点总结
关键观点1: 字段裁剪和结构调整
通过去掉无用字段和默认值,调整数据结构以减少内存占用。
关键观点2: 内存压缩
通过序列化、二进制化和压缩技术进一步节省内存占用。
关键观点3: 将Lua内存下沉到C++
仿照C++的结构进行内存布局,采用引用计数和简单的数据结构管理内存,减少内存泄露和野指针问题。
关键观点4: 测试结果
下沉C++后,普通结构和数组类型的内存优化效果显著,而Map类型内存优化仍有提升空间,通过自定义实现可进一步优化。
文章预览
作者:benderzhao 方案 常见的内存优化方法有很多,针对不同的场景有不同的解决方案,下面按照由简到繁的顺序一一道来。 字段裁剪 显而易见,把没用的字段干掉,就可以省内存。根据前文的内存计算公式,哪怕只存了一个bool值,占用也是16字节。因此,首先考虑是去掉一些完全没用的字段,其次是去掉一些默认值的字段。 比如游戏里常见的物品,有id、数量、各种属性等。如果出于方便或者可读性,亦或者C++良好的编码习惯,为每个字段都设置一个初始值,那么物品结构就大概长这样: local item = { id = 123123 , count = 1 , property1 = 0 , property2 = 0 , property3 = "" , property4 = false , } 这种写法 property1 到 property4 的默认值占用了大量的内存,单个 item 从2个Key-Value变为了6个,内存也膨胀了3倍。 比较节省内存
………………………………