在使用unity開發遊戲的過程中,借助profiler來分析記憶體使用狀況是至關重要的,但許多開發者可能還對profiler中各項資料表示的含義不甚明確,為此下面將針對profiler記憶體分析相關的問題及解答,希望對大家有用。
2.gpu usage
a. device.present:
device.presentframe的耗時顯示,該選項出現在發布版本中.
b. graphics.presentandsync:
gpu上的顯示和垂直同步耗時.該選項出現在發布版本中.
c. mesh.drawvbo:
gpu中關於mesh的vertex buffer object的渲染耗時.
d. shader.parse:
資源加入後引擎對shader的解析過程.
e. shader.creategpuprogram:
根據當前裝置支援的圖形庫來建立gpu工程.
3. memory profiler
a. used total:
當前幀的unity記憶體、mono記憶體、gfxdriver記憶體、profiler記憶體的總和.
b. reserved total:
系統在當前幀的申請記憶體.
c. total system memory usage:
當前幀的虛擬記憶體使用量.(通常是我們當前使用記憶體的1.5~3倍)
d. gameobjects in scene:
當前幀場景中的gameobject數量.
e. total objects in scene:
當前幀場景中的object數量(除gameobject外,還有component等).
f. total object count:
object資料 asset數量.
4. detail memoryprofiler
a. assets:
texture2d:記錄當前幀記憶體中所使用的紋理資源情況,包括各種gameobject的紋理、天空盒紋理以及場景中所用的lightmap資源.
b. scene memory:
記錄當前場景中各個方面的記憶體占用情況,包括gameobject、所用資源、各種元件以及gamemanager等(天般情況通過assetbundle載入的不會顯示在這裡).
a. other:
managedheap.usesize:**在執行時造成的堆記憶體分配,表示上次gc到目前為止所分配的堆記憶體量.
serializedfile(3):
webstream:這個是由www來進行載入的記憶體占用.
system.executableanddlls:不同平台和不同硬體得到的值會不一樣。
5. 優化重點
6. 專案中可能遇到的問題
a. device.present:
1.gpu的presentdevice確實非常耗時,一般出現在使用了非常複雜的shader.
2.gpu執行的非常快,而由於vsync的原因,使得它需要等待較長的時間.
3.同樣是vsync的原因,但其他執行緒非常耗時,所以導致該等待時間很長,比如:過量assetbundle載入時容易出現該問題.
4.shader.creategpuprogram:shader在runtime階段(非預載入)會出現卡頓(華為k3v2晶元).
b. stacktraceutility.postprocessstacktrace()和stacktraceutility.extractstacktrace():
1.一般是由debug.log或類似api造成.
2.遊戲發布後需將debug api進行遮蔽.
Object c block需要注意的幾點問題
摘自 date 2015 12 4 1.block定義 1 說明 a.block是oc中的一種資料型別,在ios開發中被廣泛使用 b.是block的特有標記 c.block的實現 包含在 之間 d.大多情況下,以內聯inline函式的方式被定義和使用 e.block與c語言的函式指標有些相似,但使用...
專案失敗需要注意問題
1.建立表的時候每個表新增建立時間 create time 和修改時間update create,方便排序 2.如果頁面沒有使用datagrid等複雜元件就不要引入easyui和extjs這種js框架,而是使用jquery相關外掛程式 3.設計資料庫的時候盡量不要和其他團隊共用,前期說修改沒問題,到...
使用iterat移除list需要注意的問題
迭代用完後在使用之前需要重新生成,指標變了 iteratorchannelcompositionsiterator compositions.iterator 兩次remove同一次的遍歷報錯 iterator是物件引用迭代器中的效果會反應到引用物件 iteratorchannelcompositi...