Lua遊戲記憶體洩漏檢查

2021-07-28 12:27:34 字數 662 閱讀 2528

記憶體快照

它提供乙個函式,可以對當前的 lua state 做乙個完整的快照,為了減少分析資料,只記錄了複雜物件的引用關係。也就是記錄記錄下所有 table thread userdata function 間的引用。

我們可以在不同時間,對 lua state 拍兩個快照,相比較後,就很容易知道新增加的記憶體處於何處。

_g表遍歷

方案一、從_g開始遍歷整個lua節點,包括table,metatable,和函式的upvalue的引用的統計個數,在引用計數找出異常的節點。

方案二、從_g開始遍歷整個lua節點,記錄整個節點樹,在不同時間比較檢查新增的節點。

當然,_g表遍歷也存在不少坑,例如單例,引用變數等都可能引起死迴圈,這個得注意。

在排查過程中,我們也應該懂得過濾一些干擾項。比如下面幾種型別是引用型別,並不是值型別,所以往往賦值操作後,記憶體快照也會把這些匹配出來。

tables、functins、threads、userdata。對於這幾種值型別,其變數皆為引用型別(變數本身不儲存型別資料,而是指向它們)。賦值、引數傳遞、函式返回等都操作的是這些值的引用,並不產生任何copy行為。

記憶體洩漏檢查

1.乙個指標多次進行賦值時,每次賦值後使用完後要釋放記憶體 coffsetcoedgemap poffsetcoedgemap polygonoffset ppoly,retpolygon,doffsetdis,enextend,0.1 expect true g ovldmgr.isvalid r...

記憶體洩漏檢查

關於記憶體洩漏的檢查網上有很多的例子和 其基本的方法都是用巨集,替換掉記憶體分配以及釋放的函式。但是現在網上很多的例子中沒有乙個是適合我們公司的需求的。具體的對記憶體洩漏檢查有如下要求 1.記憶體洩漏檢查的 盡可能少的占用cpu及記憶體 2.盡可能的不影響原程式 因為,我們的伺服器程式有洩漏而且是特...

SPDisposeCheck記憶體洩漏檢查工具的使用

spdisposecheck是開發sharepoint專案必不可少的工具之一,用它可以檢測出我們寫的 是否正確銷毀掉諸如spsite或者spweb之類的 資源消耗大戶 你開啟乙個spsite或者spweb物件 將占用1m到2m的記憶體,如果你不斷開啟此類物件並沒有及時關閉,那麼你的記憶體就會很快被消...