懷疑有object有洩漏,沒有被gc的時候,可以嘗試在class中的ctor和dtor, 及各種clone函式中加入自己的計數,在合適地方列印出該class靜態count的數值,確定是否被釋放。
使用object
.findobjectsoftype
(typeof
(gameobject
))來檢查有多少gameobject沒釋放
使用如下函式來檢視本機堆和託管堆的記憶體資訊
unitytotalreservedmemory = (int)profiler.gettotalreservedmemory();
unitytotalallocatedmem = (int)profiler.gettotalallocatedmemory();
unityunusedreservedmemory = (int)profiler.gettotalunusedreservedmemory();
monoheapsize = (int)profiler.getmonoheapsize();
monousedheapsize = (int)profiler.getmonousedsize();
其中託管堆在ios上是無法列印的,但是可以使用下面函式來逼近
(int)system.gc.gettotalmemory(false);
在lua中,使用如下**來列印lua中的gc記憶體
local c = collectgarbage("count")
Unity記憶體優化
一 大概標準 1.紋理 40m 2.mono 30m 3.animation 20m 4.mesh 10m 6.font 10m 7.audio 5m 8.gfxdriver 25m 9.resourcemanager 視情況而定 跟 你resourcemanager裡放了多少檔案 該標準是我做 m...
unity記憶體優化準則
常見判斷準則 記憶體閾值關注 managedheap.usedsize建議不超過20m 記憶體閾值關注 總體mone建議不超過40m 記憶體閾值關注 reserved memory建議不超過150m 記憶體閾值關注 2d紋理建議不超過50m 記憶體閾值關注 mesh大小建議不超過20m 記憶體閾值關...
unity 記憶體方面優化
作者寫的很好,看了他的書收穫很大。以下內容摘自 既然要聊unity3d執行時候的記憶體優化,那我們自然首先要知道unity3d遊戲引擎是如何分配記憶體的。大概可以分成三大部分 unity3d內部的記憶體 mono的託管記憶體 若干我們自己引入的dll或者第三方dll所需要的記憶體。第3類不是我們關注...