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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM