Lua的内存优化

Posted fivee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lua的内存优化相关的知识,希望对你有一定的参考价值。

一、string.gsub和string.gmatch

string.gsub 和 string.gmatch 会产生大量的子串,这些子串都会开辟一片内存,而我们根本用不上这些子串。

技术图片

 

 二、Lua中String是不可变值

这一点也经常被大家忘记,哪怕是写Lua的老手。在以下代码中,因为Lua的string是不可变值,每次拼接都会产生一串新的字符串。这种疏忽经常出现在 I/O文件、聊天频道、处理配置等描述字段时发生。

技术图片

 

 三、内存池

如果想降低内存分配速度,使用内存池复用对象是必不可少的。在Lua内存池的使用过程中,最容易出现的问题是,忘了放回池子以及池子大小不合理。

四、C#代理

如果把Lua匿名函数注册给C#的代理,那么这个Lua匿名函数将不能正确地被LuaGC了,也就是泄露了。改进方法就是不把Lua匿名函数注册给C#代理,这样的话,每隔一段时间C#都会主动Dispose

 

全文参考:https://blog.csdn.net/uwa4d/article/details/72957029

以上是关于Lua的内存优化的主要内容,如果未能解决你的问题,请参考以下文章

魔改TProto优化掉100MB的Lua内存

Lua配置表内存优化

Lua配置表内存优化

Lua与Unity的内存优化技术

lua5.3gc卡顿

Lua优化:破解全局变量下的使用困局