在我們發(fā)布的Unity 2022.2 Tech Stream中,1.0.0版本的Memory Profiler已經(jīng)正式面向所有人開放。該版本進一步完善了性能分析工具,可描繪更全面的內(nèi)存使用情況,使得性能優(yōu)化與內(nèi)存問題檢測更為方便快捷。
內(nèi)存分析器(Memory Profiler):概覽
應(yīng)用在容量有限的設(shè)備上非常容易出現(xiàn)內(nèi)存溢出甚至崩潰的情況,因此內(nèi)存優(yōu)化至關(guān)重要。如果項目需要發(fā)布至多個平臺,開發(fā)者如何調(diào)整內(nèi)存占用,最大化利用每個平臺更是要考慮的重點。
Memory Profiler可以解決以上問題,讓用戶能夠截取并審查游戲在特定時間點的內(nèi)存占用情況。并借助這些“快照”,讓用戶找出游戲中最占內(nèi)存的部分或崩潰的原因。
注:Memory Profiler的完整功能和內(nèi)存跟蹤僅支持2022.2及以上版本,但用戶也可以在2022及以上的空項目里打開窗口、導(dǎo)入舊版快照,再用新界面進行分析。
工具的發(fā)展歷程
Memory Profiler最初是作為試驗包發(fā)布的,在這次的新版本中,我們聽取了多位早期用戶的反饋意見,大幅修改了UI和UX,使其更加易用。
因此,在開發(fā)新版本時,Unity設(shè)立了以下幾個目標:
1、簡化最常見、最重要的使用流程,讓問題的識別和修復(fù)更快
2、提供更全面和可靠的信息,使多種設(shè)備(使用平臺專用的分析器)的內(nèi)存占用對比更簡單
3、用更易理解的方式呈現(xiàn)信息,讓缺乏專業(yè)知識的用戶同樣能有效地優(yōu)化應(yīng)用
為實現(xiàn)目標,Unity與早期用戶緊密合作來了解他們的需求和痛點,推出數(shù)代設(shè)計直至達成最佳的用戶體驗。
得益于這些用戶的反饋,Unity團隊極大地精簡了工具,移除了不少術(shù)語,使對象、細節(jié)信息和依賴項的檢查更為輕松。
工具內(nèi)容
Memory Profiler由三部分組成,每部分都用上了改進后的新UI:
1、快照列表(Snapshot list)
2、主窗口,被分為三種工作視圖:摘要(Summary)、Unity對象(Unity Objects)和總內(nèi)存(All of Memory)
3、所選對象細節(jié)
快照列表
快照列表保存了用戶在游戲中截取的快照,以及內(nèi)存使用、截圖日期等信息。用戶可以使用工具欄的“Capture”,或者主窗口上的快照按鈕,來截取快照。
對比多張快照可檢查內(nèi)存占用是否有變化,并了解項目性能是否有提升。
最后,用戶也能在快照列表里查看單張快照或?qū)Ρ葦?shù)張快照(下文將將詳細介紹)。
主窗口
主窗口是Memory Profiler的核心區(qū)域,它被分為三個視圖:摘要(Summary)、Unity對象(Unity Objects)和總內(nèi)存(All of Memory)每個視圖都可在主窗口頂部打開。
摘要(Summary)視圖是加載或截取快照時的默認視圖。它提供了當前內(nèi)存占用、設(shè)備“常駐”內(nèi)存以及提交但未使用的內(nèi)存等信息。內(nèi)存會被分成多個類型,以方便用戶開始調(diào)查。
最后,摘要(Summary)視圖是開展詳細分析,如“占內(nèi)存最大的Unity對象”或“托管內(nèi)存拆分”等的入口。
Unity對象(Unity Objects)視圖應(yīng)該是最常用的視圖。它列出了所有加載到內(nèi)存的對象,如紋理、著色器、字體等。用戶通常可以在此處找出哪些對象過大,哪些是錯誤加載的,或者哪些一直被引用、保留在內(nèi)存里的。
總內(nèi)存(All of Memory)視圖支持查看分過類的所有內(nèi)存——包括本機內(nèi)存(Native)、托管內(nèi)存(Managed)、圖形內(nèi)存(Graphics)和可執(zhí)行文件內(nèi)存(Executables)。用戶可以在此查看Memory Priofiler捕捉的數(shù)據(jù),調(diào)查應(yīng)用的特定方面,了解項目內(nèi)存由哪些東西組成。
所選對象細節(jié)(Selection details)視圖
所選對象細節(jié)(Selection details)提供了主屏幕被選中對象的詳細信息,包括內(nèi)存類別的描述、對象的潛在引用或詳情。
更多的信息可幫用戶了解查看的對象,以及它為何出現(xiàn)在內(nèi)存中。并且,如果編輯器打開了一個項目,用戶可以“ping”出對象,直接在場景或項目窗口檢查資產(chǎn)。
對比快照
以上所有視圖都能用于檢查單張快照或?qū)Ρ榷鄰埧煺铡?/p>
如果要對比一張快照,請選擇列表中的“Compare”,再選取第二張快照。打開對比欄時所有視圖都會自動轉(zhuǎn)換成對比模式。
對比模式下,摘要(Summary)視圖將并排顯示兩張截圖的內(nèi)存分析,方便對比兩者內(nèi)存占用的主要不同(對比雙方會被稱為“A”和“B”)。
Unity對象(Unity Objects)和總內(nèi)存(All of Memory)視圖帶有一種新的專用UI,讓用戶能查看各類內(nèi)存的大小變化或?qū)ο蟮臄?shù)量變化。
在上方選取一個類別,用戶就能在下方圖表中查看A與B單個類別上的不同。
如果想重新檢查單張快照,用戶可以選擇列表的“Single”。第二張對比照仍會保留,方便用戶快速在兩個視圖間切換。
了解Unity內(nèi)存及其優(yōu)化方法
在未來,Unity計劃提供更多資源與信息,來介紹如何識別常見的內(nèi)存問題以及Unity內(nèi)存的工作方式,幫助用戶學(xué)習(xí)高效的內(nèi)存優(yōu)化。