1.Memory簡介
2.Memory中各參數的功能和作用
1.Memory簡介
1).Memory(內存)模塊它是unity中監視內存使用情況的關鍵工具, 它能幫助我們識別哪些資源在占有大量內存,是否存在內存泄露或垃圾回收頻繁等問題2).游戲中如果出現以下問題, 可以重點觀察memorya.游戲卡頓, 掉幀- 表現: 游戲突然變慢, 不定期小卡頓, 操作延遲等- 可能原因: 內存不足導致系統頻繁進行垃圾回收(GC), 降低游戲幀率b.閃退, 崩潰- 表現: 玩著突然黑屏突出, 特定場景(如加載大地圖等)崩潰- 可能原因: 設備分配不出更多內存, 系統強制殺掉進程c.加載時間變長- 表現: 加載界面等待時間變長, 場景切換明顯卡頓- 可能原因: 加載資源時需要更多內存, 系統調度與GC頻繁運行d.發熱嚴重, 掉電快- 表現: 手機發燙嚴重, 電池消耗快- 可能原因: 設備內存使用到達極限, 系統/游戲頻繁調度內存資源, CPU, GPU都高負荷運轉e.低端設備無法運行- 表現: 打開即閃退, 進主界面就奔潰- 可能原因: 老舊設備的可用內存更少, 超出后甚至無法加載首屏
2.Memory中各參數的功能和作用

a.Total Used Memory已使用的內存總量(包括紋理, 網格, 對象, 腳本等所有內存)b.Texture Memory貼圖紋理使用的內存總量, 通常是內存占用的最大部分c.Mesh Memory網格使用的內存總量(頂點, 索引緩沖等)和場景中物體數量密切相關d.Material Count材質數量, 材質越多越難合批, 內存占用也高e.Object Count內存中的UnityEngine.Object實例總數, 包括貼圖, 網格, 腳本, GameObjectf.GC Used MemoryGC(托管堆)使用的內存(堆已分配但仍被使用)g.GC Allocated In Frame該幀分配的托管堆內存

a.Normalized(規范化)勾選后可以幫助我們分析內存是否穩定, 對比不同類型資源的內存占比變化b.Total Committed Memory(總提交內存)表示Unity總共已分配的內存(虛擬內存), 包括系統預留 + 實際使用- Tracked Memory(跟蹤的內存, 即Memory Profiler能看見的部分), 包括托管堆內存,圖形資源, 音視頻等In Use表示實際使用量, Reserved表示預留內存- Untracked Memory(未跟蹤的內存), Unity已使用但未跟蹤的內存總量, 比如本機插件, Mono或IL2CPP的元數據c.Total Memory Breakdown(總內存細分)表示會顯示具體為Unity的哪些子系統分配了多少內存- Managed Head托管堆內存使用情況(即由C#腳本分配的對象內存), 分為正在使用/預留內存- Graphics & Graphics Driver圖形/圖形驅動程序分配的內存- Audio音效系統預估內存使用量- Video視頻系統預估內存使用量- Other其它系統內存使用情況, 未歸類但可追蹤的內存, 如Unity編輯器自身的一些緩存結構- ProfilerUnity Profiler本身占用的內存(采樣數據, 快照)- Untracked Memory內存性能分析器無法追蹤的內存使用量d.Object Stats(對象統計信息)表示資源類對象的數量與內存分布概括- Textures已加載的紋理總數以及使用的內存- Meshes已加載的網格總數以及使用的內存- Materials已加載的材質總數以及使用的內存- Animations Clips已加載的動畫剪輯總數以及使用的內存- Assets已加載的資源總數- Game Objects場景中的游戲對象實例的總數- Scene ObjectsScene中所有對象總數, 包含GameObject, 組件以及場景中不屬于資源的內容- GC allocated in frame該幀分配的托管堆內存數量和總大小
注:對于空場景都有Textures, Meshs等對象的分配和內存占用; 因為unity即使是空場景, 也會默認加載一些內建資源, 比如內置字體, 編輯器用到的各種圖標, GUI樣式, Gizmos相關資源Profiler自己的資源, 這些內容其實不屬于游戲資源