一、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