
記憶體使用概覽
Total Allocated (總分配記憶體): 1.31 GB
- 這是Unity向系統申請的總記憶體量
- 可以超過裝置的實際可用記憶體而不會出問題
Total Resident On Device (裝置常駐記憶體): 0.62 GB
- 這是實際佔用裝置實體記憶體的量
- 這個數值才是真正影響裝置效能的關鍵指標
分配記憶體分布詳解
1. Executables & Mapped (0.52 GB) - 黃色
- 可執行檔和映射檔案佔用的記憶體
- 包括Unity引擎程式碼、你的遊戲程式碼、第三方函式庫等
2. Native (278.9 MB) - 綠色
3. Managed (196.6 MB) - 藍色
- C#腳本使用的托管記憶體
- 由Mono或IL2CPP虛擬機管理
- 包括你寫的C#程式碼建立的所有物件
- 下方的「Managed Heap Utilization」顯示詳情:
- Virtual Machine: 124.2 MB(虛擬機本身)
- Empty Heap Space: 39.7 MB(空閒堆疊空間)
- Objects: 32.7 MB(實際C#物件)
4. Graphics (Estimated) (163.6 MB) - 紫色斜紋
- GPU顯示記憶體的估算值
- 包括紋理、渲染目標、幀緩衝等
- 注意是「估算」,實際值可能有差異
5. Untracked (165.4 MB) - 灰色斜紋
- 未被分類追蹤的記憶體
- 可能包括:
- 第三方外掛的記憶體使用
- 系統層級的記憶體開銷
- Profiler無法準確歸類的記憶體
Unity物件類別(Top Unity Objects Categories)
顯示了哪些類型的Unity物件佔用最多記憶體:
- Texture2D: 138.8 MB(最大宗,紋理資源)
- Shader: 24.8 MB
- RenderTexture: 15.6 MB
- Font: 15.5 MB
- AudioClip: 14.1 MB
最佳化建議
從你的資料來看:
NOTE.
要連接到 memory profiler 必須打包時勾選 developer build、autoconnect 兩個選項
實際上游戲需要關心的是 Untracked、Managed 兩部分的大小,另外需要查看 Unity Objects 裏面有沒有資源重複問題
從 Texture2D 發現 UI atlas 出現重複,但 Editor 下測試卻沒有,這個版本是之前打包的,可能是因爲當時把 2 個 ui prefab 放到 Assetbundle 進行打包測試
留言
張貼留言