![]()
這是第467篇UWA技術知識分享的推送,精選了UWA社區、UWA AI問答的熱門話題等技術知識點,助力大家更全面地掌握和學習。
UWA社區主頁:community.uwa4d.com
UWA QQ群:793972859
本期目錄:
如何降低Animator的調用次數
- 為什么UI相關堆內存對象和紋理資源都占用了較大內存沒有釋放
From問答社區
Q:現在動畫的Culling Mode是Cull Update Transforms,不過從Scene窗口來看,在屏幕外的動畫還是在動,這個還需要做其他的什么設置嗎,還是我理解的不對?
![]()
然后,之前Camera沒有勾選Occlusion Culling,這個有關系嗎?
為什么報告里Animator的調用次數那么多呢?
A:首先,Scene里面確實會影響的,要準確的話,需要關閉Scene窗口。
然后,Camera沒有勾選Occlusion Culling,這個沒關系的。
最后,在Profiler里面選擇那個Animator.ApplyOnAnimatorMove函數,然后打開Related Data,是可以看到具體是哪些對象的:
![]()
歡迎大家轉至社區交流:
https://answer.uwa4d.com/question/69b7a2f392894f1c4f0c2354
From UWA AI 問答
Q1:項目中發現一些UI圖片被大量UI對象引用,但這些對象應該已經在代碼中調用銷毀了,但看起來RUUA和GC都沒起到作用,這最終導致我項目中很多UI相關堆內存對象和紋理資源都占用了較大內存沒有釋放。可能是什么原因?
A:此問題通常由隱性引用、資源標志位或原生資源未釋放導致。
1. 排查代碼引用鏈:Lua或C# 中的靜態變量、事件監聽、閉包可能持有UI對象引用,導致GC無法回收。查看GOT Online報告的Mono引用對象統,若“Destroyed對象數量”持續上漲,說明存在Lua端未解引用,需及時釋放引用鏈。
2. 檢查資源標志位:若紋理或對象被標記為 HideFlags.DontUnloadUnusedAsset,Resources.UnloadUnusedAssets將無法卸載它們。需檢查代碼是否誤設該標志,必要時使用DestroyImmediate手動清除。
3. 確認AssetBundle與圖集依賴:若引用圖集的AssetBundle未完全卸載,圖集會駐留。確保AssetBundle.Unload(true)調用正確,或嘗試Resources.UnloadAsset。
4. 排查原生資源:RenderTexture不會自動垃圾回收,使用后必須調用Release釋放硬件資源,否則會造成顯存與內存泄漏。
5. 考慮內存碎片:堆內存高未必是對象未卸載,可能是碎片過多。排查byte[]、MemoryStream等頻繁分配對象,使用對象池優化。
建議結合內存快照分析具體占用對象,定位引用源,必要時手動管理資源生命周期,避免過度依賴自動卸載機制。
Q2:我看了UWA報告中的Mono引用對象統計頁面,Destroyed對象數確實較高且有上漲,這個具體是什么含義?
![]()
A:Destroyed對象數較高且持續上漲是Mono堆內存泄漏的重要預警信號,具體含義如下:
1. 定義說明
Destroyed對象指在C# 端已調用Destroy銷毀,但Lua端仍持有引用的Mono層對象。這些對象雖在場景中已被移除,但因Lua端未解引用,仍占用堆內存無法被GC回收。
2. 產生原因
Lua訪問Unity對象時,會通過Wrapper代碼將對象引用存入容器,以確保C# 端GC不會提前回收。若Lua端未及時釋放這些引用,C# 端的Destroy操作無法徹底清理內存,導致對象駐留。
3. 持續上漲的風險
若Destroyed對象數量持續上漲,說明Lua端引用鏈未正確清理,Mono堆內存會不斷累積,最終導致:
內存占用持續增長
GC頻率升高,引發卡頓
極端情況下導致內存溢出閃退
4. 排查建議
查看GOT Online報告中Mono對象引用柱狀圖,確認Destroyed對象趨勢
對比不同采樣幀,定位對象數量激增的時間點
結合Lua堆內存分配堆棧,查找高分配函數
檢查Lua代碼中的事件監聽、閉包、靜態變量是否持有UI對象引用
5. 解決方法
在Lua端及時釋放不再使用的對象引用
移除不必要的靜態引用和事件監聽
使用弱引用管理長期持有的對象
定期調用GC強制回收
若Destroyed對象數穩定在某一水平后不再上漲,通常風險可控;若持續上漲,需優先排查Lua引用鏈,避免內存泄漏惡化。
分享鏈接 :
https://www.uwa4d.com/main/uwa-shared.html?shareId=1d682f3a-b8eb-49d9-a00b-07f0813dddc0
無論是社區里開發者們的互助討論,還是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.