专栏名称: 腾讯技术工程
腾讯技术工程事业群官方微信公众号。腾讯前沿科技技术、产品、行业信息交流发布平台。
今天看啥  ›  专栏  ›  腾讯技术工程

Lua进程内存优化方案总结

腾讯技术工程  · 公众号  ·  · 2024-08-19 18:00

主要观点总结

本文介绍了作者对于内存优化方法的研究和探索,包括常见的内存优化手段如字段裁剪、结构调整、内存压缩等,以及将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倍。 比较节省内存 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览