天天看點

用正确的方式,三天搞定Mono堆記憶體洩漏!

堆記憶體洩露可謂項目的“癌症”之一,其洩露方式多種多樣,讓大多數研發團隊無法入手,更有不知多少項目是以而擱淺。為此,UWA今天推出了堆記憶體分析功能,幫助大家在解決堆記憶體洩漏的問題時能夠有的放矢。該功能已在UWA多次的深度優化項目中得到驗證:僅需三天,徹底告别堆記憶體洩漏!

用正确的方式,三天搞定Mono堆記憶體洩漏!

如下圖,使用者可以在報告的裝置清單(右上角)中選擇“Mono”,就可以看到對應的堆記憶體分析報告。該報告主要提供 堆記憶體具體配置設定 和 堆記憶體洩露分析 兩大功能。下面我們将對這兩個功能分别說明。

用正确的方式,三天搞定Mono堆記憶體洩漏!

Mono 堆記憶體分析報告界面

相較于之前UWA報告中的Top堆記憶體函數功能,新增的堆記憶體具體配置設定會更詳盡地标明其堆記憶體配置設定的出處,讓使用者對代碼的堆記憶體配置設定一目了然,進而進行快速定位以及優化邏輯代碼的堆記憶體開銷。

用正确的方式,三天搞定Mono堆記憶體洩漏!

堆記憶體具體配置設定界面

如上圖所示,UWA報告中可以檢視深度的代碼記憶體配置設定堆棧,對于到底哪些函數配置設定了多少堆記憶體,研發團隊可以一目了然。同時,我們對邏輯代碼進行分析和篩選,将System函數、Unity函數和邏輯代碼函數進行區分,便于使用者進行針對性的優化。

該功能将分析Mono堆記憶體的實際占用情況,在堆記憶體洩露分析界面,我們會根據使用者的不同級别,列出不同數量的邏輯代碼數量。點選特定的函數名,即可進入相應的代碼界面。

用正确的方式,三天搞定Mono堆記憶體洩漏!

UWA堆記憶體洩漏分析界面

函數界面中會顯示該函數在遊戲運作過程中的真實堆記憶體占用情況。同時,點選下方柱狀圖中任何一個條形柱,都能看到其詳細的堆記憶體實際使用情況。

用正确的方式,三天搞定Mono堆記憶體洩漏!
用正确的方式,三天搞定Mono堆記憶體洩漏!

另外,通過點選上圖右方的“藍色箭頭”,可以檢視某些函數中生成的駐留在記憶體中的詳細變量情況,進而讓你更快地判斷和定位堆記憶體的洩露點。

用正确的方式,三天搞定Mono堆記憶體洩漏!
如何檢視堆記憶體洩漏? 使用者可以通過選擇柱狀圖中的任意兩次記憶體采樣,對記憶體變化進行比較,進而可以捕捉到具體的洩露函數,以及洩露的具體記憶體和變量。
用正确的方式,三天搞定Mono堆記憶體洩漏!

原文出處:侑虎科技

本文作者:admin

轉載請與作者聯系,同時請務必标明文章原始出處和原文連結及本聲明。

繼續閱讀