Unity Profiler記憶體分析

2021-08-03 16:39:59 字數 1812 閱讀 8798

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進行遮蔽.

Unity Profiler 效能分析

a.device.present device.presentframe的耗時顯示,該選項出現在發布版本中.b.graphics.presentandsync gpu上的顯示和垂直同步耗時.該選項出現在發布版本中.c.mesh.drawvbo gpu中關於mesh的vertex buffer obj...

Unity Profiler 效能分析

device.presentframe的耗時顯示,該選項出現在發布版本中.b.graphics.presentandsync gpu上的顯示和垂直同步耗時.該選項出現在發布版本中.c.mesh.drawvbo gpu中關於mesh的vertex buffer object的渲染耗時.d.shader...

Unity Profiler 效能分析

device.presentframe的耗時顯示,該選項出現在發布版本中.b.graphics.presentandsync gpu上的顯示和垂直同步耗時.該選項出現在發布版本中.c.mesh.drawvbo gpu中關於mesh的vertex buffer object的渲染耗時.d.shader...