![]()
這是第470篇UWA技術知識分享的推送,精選了UWA社區、UWA AI問答的熱門話題等技術知識點,助力大家更全面地掌握和學習。
UWA社區主頁:community.uwa4d.com
UWA QQ群:793972859
本期目錄:
系統層顯存 vs 引擎層顯存的差值從哪來
- 如何定位String的異常增長
本次推送的實戰案例來自于使用UWA服務的項目的真實且典型的問題。UWA將關鍵線索、定位路徑與處理建議整理成了可復用的案例筆記,便于大家快速對照、排查自身項目中的同類問題。
實戰案例
Q:我們項目中通過系統層統計到的顯存有1.5GB,但是通過引擎層采集到的紋理、網格、RT這些加起來也只有400+MB,為什么會這樣,其它的部分是什么呢?
![]()
![]()
A:這個其實是一種比較少見的情況,根據以往的經驗來說可能有以下幾種可能性:
1. Shader占用本身是屬于引擎層Native部分的,在運行中會執行Shader.CreateGPUProgram把它編譯成GPU可以理解使用的一個Program,生成的這個GPU Program在一些項目中可能造成相當可觀的高占用,我們在過往部分極端測試中也發現,它會同時導致系統層Native內存與GFX顯存出現顯著上升。
![]()
2. 測試發現一些RT除了在Memory Profiler中統計到的部分外,也會對顯存造成一些額外的開銷。
![]()
3. 在其它項目中還見過使用Compute Buffer,或者在引擎設置里面開辟一些額外的Buffer,通過C++進行加載的,也會對顯存造成額外開銷。
這些內存的具體來源是什么無法直接通過Unity引擎的分析工具進行分類和定位,建議可以做一些對比測試,比如去拆分一些渲染策略或場景,如果觀察到開啟某個渲染策略、進入某個渲染場景時顯存出現明顯的飆升,那么基本就能做更精準的定位了。
參考文章:
《Unity移動游戲工業級性能優化指南 3.0》
https://edu.uwa4d.com/course-intro/1/619
實戰案例
Q:我用Memory Profiler看到托管堆內存部分中String駐留了50+MB、45萬多條,這個現象是正常的嗎?
![]()
A:這一部分占用還是比較高的,從下圖右邊的Details信息看很多來自TMP圖集用的文本,這種大量字符串理論上不應該駐留在運行時了,我們生成了TMP的圖集紋理后像這個文本應該就不需要了,可以看看是不是可以及時卸載。
![]()
無論是社區里開發者們的互助討論,還是AI基于知識沉淀的快速反饋,核心都是為了讓每一個技術難題都有解、每一次踩坑都有回響。本期分享分別來自UWA AI問答和UWA問答社區,希望這些從真實開發場景中提煉的經驗,能直接幫你解決當下的技術卡點,也讓你在遇到同類問題時,能更高效地找到破局方向。
封面圖來源于網絡
今天的分享就到這里。生有涯而知無涯,在漫漫的開發周期中,我們遇到的問題只是冰山一角,UWA社區愿伴你同行,一起探索分享。歡迎更多的開發者加入UWA社區。
UWA官網:www.uwa4d.com
UWA社區:community.uwa4d.com
UWA學堂:edu.uwa4d.com
點擊下方名片關注我們,將我設為星標,及時接收小編每日推送哦,性能優化不迷路~
近期精彩回顧
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.