使用Unity新的Memory Profiler


Unity開源了一個新的Memory Profiler,目前還沒有集成到發布版的Unity中。不過這個新的Memory Profiler確實比現有的Profiler更加好用,所以值得一試。

下載地址

https://bitbucket.org/Unity-Technologies/memoryprofiler
把這個git倉庫clone到本地。工具在這個倉庫中的Unity工程里。

使用方式

  1. 游戲必須使用IL2CPP作為腳本后端進行編譯。目前iOS默認使用的是IL2CPP,而android不是,所以在測試的時候,我用了iOS版本
  2. 游戲以Development Build方式打包。同時我還勾選了Autoconnect Profiler,不確定如果不勾選這個選項是否可以,沒有測試過
  3. 在真機上安裝啟動游戲。我使用的測試機器是iPad
  4. 打開Memory Profiler代碼倉庫中的Unity工程
  5. 先打開Unity自帶的Profiler,在Active Target中選中測試機。新的Memory Profiler還是需要使用老Profiler的Target選項才能連接到目標機器。
  6. 打開新的Memory Profiler。入口在Window菜單里,見下面截圖。

    Memory Profiler菜單位置
  7. 點擊Memory Profiler面板頂部的Take Snapshot菜單即可。之后需要耐心等待結果出來。

數據分析

Memory Profiler分析之后的結果見下面截圖。


Memory Profiler內存分析的結果


內存占用的結果已經以非常直觀的塊狀圖的方式顯示出來了。圖中的每一個大的色塊是一種內存類型,例如左上角的是Mesh,Mesh下面的是Particle System,而最下面的是Texture2D。可以直觀的看到,游戲里占用資源最多的是Texture2D。
點擊Texture2D之后,還可以看到其中包括的所有貼圖名字及其引用,通過顯示的引用數據,可以非常方便的查看到底是哪里用到了這個資源,便於之后的優化。
可見通過分析這個內存快照,能夠回答下面這些問題:
1. 占用內存的分別是哪些類型的數據?
2. 哪種類型的數據占用了最多的內存?
3. 每個類型的內存占用中具體包括哪些項?
4. 每一個內存占用的細項分別出現在代碼中的哪里?
這里就體現出這個工具的強大之處了,因為只要能回答上面這些問題,多數內存問題也就不是問題了。

不足之處

雖然這個工具很好用,但是目前還沒有集成到Unity的發布版本之中,可見還不是特別成熟。我遇到的最大的問題是抓取內存數據的速度實在是很慢,大概需要30秒鍾的時間。第一次測試的時候,都以為Unity已經奔潰了。后來才發現,其實沒有崩潰,只是特別慢,需要有耐心。

(全文完)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM