国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁 > 網(wǎng)易號 > 正文 申請入駐

【厚積薄發(fā)】如何解決ProtoBuf反序列化中GC高的問題

0
分享至


這是第455篇UWA技術知識分享的推送,精選了UWA社區(qū)、UWA AI問答的熱門話題等技術知識點,助力大家更全面地掌握和學習。

UWA社區(qū)主頁:community.uwa4d.com

UWA QQ群:793972859

本期目錄:

  • 如何解決ProtoBuf反序列化中的GC高的問題

  • 如何在編輯器中集成實時查看Mipmap使用層級工具

From UWA AI 問答

Q:有沒有比較好的解決ProtoBuf反序列化GC的方案

A:在Unity項目中,使用ProtoBuf進行反序列化時產(chǎn)生的GC主要來源于兩方面:內(nèi)存分配的臨時對象(如字符串、裝箱操作)和反射機制的低效調(diào)用。以下是針對這些問題的成熟且高效的解決方案。

1. 使用[Preserve]與強制AOT初始化避免反射GC

IL2CPP環(huán)境下,由于AOT編譯限制,ProtoBuf生成代碼中的泛型反射方法可能未被提前編譯,導致運行時嘗試動態(tài)調(diào)用而崩潰或觸發(fā)大量GC。為確保所有必要的反射初始化代碼被保留:

using Google.Protobuf.Reflection;
using UnityEngine.Scripting;


[Preserve]
private void ForceReflectionInitialization()
{
// 顯式調(diào)用每個消息類型的ForceReflectionInitialization
FileDescriptor.ForceReflectionInitialization ();
FileDescriptor.ForceReflectionInitialization ();
// 添加所有用到的消息類型
}

此方法無需調(diào)用,僅需存在即可被鏈接器保留。配合[Preserve]特性防止代碼剝離,可有效解決因AOT缺失導致的異常及性能損耗。

2. 避免字符串與值類型裝箱,實現(xiàn)0GC解析輔助

參考TMP文本優(yōu)化思路,可對ProtoBuf解析過程中的輸出處理進行定制,減少中間對象分配。例如,在自定義的日志系統(tǒng)或UI更新中直接復用StringBuilder寫入,而非通過ToString()創(chuàng)建新字符串。

  • 全局復用StringBuilder用于格式化輸出。

  • 對數(shù)字字段轉(zhuǎn)字符串時,采用無GC的NumberFormatter.NumberToString(ref char[] buffer, int value)方式,將結(jié)果寫入預分配字符數(shù)組。

  • 自定義IFormatter 實現(xiàn),繞過裝箱操作,直接處理基本類型。

3. 使用原生字節(jié)訪問替代高開銷API

對于高頻解析場景(如網(wǎng)絡同步),考慮繞過完整反序列化流程,直接讀取字節(jié)流中的關鍵字段:

// 使用CodedInputStream直接讀取特定字段
var input = CodedInputStream.CreateInstance(data);
while (!input.IsAtEnd)
{
var tag = input.ReadTag();
switch (tag.FieldNumber)
{
case 1:
int hp = input.ReadInt32();
break;
// 只解析必要字段
}
}

這種方式跳過對象構建開銷,適用于只關心部分數(shù)據(jù)的輕量級更新。

4. 緩沖池管理Message實例

頻繁創(chuàng)建/銷毀ProtoBuf對象會加劇GC壓力。建議使用對象池緩存常用Message實例:

public class MessagePool where T : IMessage, new()
{
private static readonly Stack _pool = new();

public static T Get() => _pool.Count > 0 ? _pool.Pop() : new T();

public static void Release(T msg) { _pool.Push(msg); }
}

結(jié)合Clear()重置狀態(tài)后復用,顯著降低內(nèi)存分配頻率。

綜上,核心策略是:強制AOT初始化 + 禁止代碼剝離 + 復用緩沖區(qū) + 裁剪不必要的反序列化流程。這些方法已在多個上線項目中驗證,能有效將ProtoBuf相關GC降至接近零。

分享鏈接 :

https://www.uwa4d.com/main/uwa-shared.html?shareId=228136d0-985e-4af9-8c83-f84b04834677

From問答社區(qū)

Q:最近在優(yōu)化貼圖內(nèi)存,請問有沒有開源庫或者計算方法,可以檢測貼圖在屏幕上的占比情況?

比如,一張1024的貼圖,如果渲染時一直使用很高層級的Mipmap,就說明其實不需要1024這么高的分辨率。我記得有種工具還能通過顏色可視化,我主要想集成在編輯器里面實時查看修改。

A:URP里面編寫Mipmap工具可以參考以下鏈接:

Scene View Debug Modes in the Unity URP


https://johnaustin.io/articles/2021/scene-view-debug-modes-in-the-unity-urp

A way to visualize mip levels


https://aras-p.info/blog/2011/05/03/a-way-to-visualize-mip-levels/

歡迎大家轉(zhuǎn)至社區(qū)交流

https://answer.uwa4d.com/question/6925280c682c7e5cd61bfb76

無論是社區(qū)里開發(fā)者們的互助討論,還是AI基于知識沉淀的快速反饋,核心都是為了讓每一個技術難題都有解、每一次踩坑都有回響。本期分享分別來自UWA AI問答和UWA問答社區(qū),希望這些從真實開發(fā)場景中提煉的經(jīng)驗,能直接幫你解決當下的技術卡點,也讓你在遇到同類問題時,能更高效地找到破局方向。

封面圖來源于網(wǎng)絡

今天的分享就到這里。生有涯而知無涯,在漫漫的開發(fā)周期中,我們遇到的問題只是冰山一角,UWA社區(qū)愿伴你同行,一起探索分享。歡迎更多的開發(fā)者加入UWA社區(qū)。

UWA官網(wǎng):www.uwa4d.com

UWA社區(qū):community.uwa4d.com

UWA學堂:edu.uwa4d.com

點擊下方名片關注我們,將我設為星標,及時接收小編每日推送哦,性能優(yōu)化不迷路~

近期精彩回顧

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務。

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.

相關推薦
熱點推薦
戴旭:中美一旦發(fā)生戰(zhàn)爭,美國有實力將中國沿海城市打得稀巴爛?

戴旭:中美一旦發(fā)生戰(zhàn)爭,美國有實力將中國沿海城市打得稀巴爛?

二大爺觀世界
2026-01-16 03:04:40
上海大叔55歲未婚,住垃圾堆卻要穿名牌,打開冰箱后才知啥叫生活

上海大叔55歲未婚,住垃圾堆卻要穿名牌,打開冰箱后才知啥叫生活

寒士之言本尊
2025-09-08 23:20:45
你有知道哪些炸裂的秘密?網(wǎng)友:我有個秘密說出來肯定大家要笑死

你有知道哪些炸裂的秘密?網(wǎng)友:我有個秘密說出來肯定大家要笑死

帶你感受人間冷暖
2026-01-29 00:10:05
快船137-117鵜鶘!泰倫盧談加蘭攤牌,小卡看清現(xiàn)實,勇士被看低

快船137-117鵜鶘!泰倫盧談加蘭攤牌,小卡看清現(xiàn)實,勇士被看低

魚崖大話籃球
2026-03-02 15:37:52
順風車爆單了,卻沒人搶!司機:拼車0.3元一公里,真的接不了

順風車爆單了,卻沒人搶!司機:拼車0.3元一公里,真的接不了

網(wǎng)約車觀察室
2026-03-02 10:04:46
伊朗稱擊落美軍F15戰(zhàn)機

伊朗稱擊落美軍F15戰(zhàn)機

界面新聞
2026-03-02 15:37:02
央媒怒批、坑害老百姓!臭名昭著的四大相聲演員,各個難以原諒

央媒怒批、坑害老百姓!臭名昭著的四大相聲演員,各個難以原諒

青橘罐頭
2026-02-18 07:08:27
父母決裂哥哥離家出走,她被迫接手千億資產(chǎn),如今靠收租年入30億

父母決裂哥哥離家出走,她被迫接手千億資產(chǎn),如今靠收租年入30億

大魚簡科
2026-03-01 12:20:15
如果我退休也能拿到這么高的退休金就好了…

如果我退休也能拿到這么高的退休金就好了…

慧翔百科
2026-03-02 12:02:37
英超近10輪拿分情況:曼聯(lián)22分第1 阿森納21分第2 熱刺4分墊底

英超近10輪拿分情況:曼聯(lián)22分第1 阿森納21分第2 熱刺4分墊底

智道足球
2026-03-02 08:22:53
入獄住單間全監(jiān)安空調(diào),獄中16年狂賺30億,為何他能如此豪橫

入獄住單間全監(jiān)安空調(diào),獄中16年狂賺30億,為何他能如此豪橫

少女百褶臉
2026-02-07 14:32:51
中東多地遭伊朗報復性打擊,迪拜帆船酒店遭襲起火

中東多地遭伊朗報復性打擊,迪拜帆船酒店遭襲起火

觀察者網(wǎng)
2026-03-01 12:13:04
對越還擊戰(zhàn)中的那些叛徒,主動投敵行徑令人不齒,最終的結(jié)局無不大快人心

對越還擊戰(zhàn)中的那些叛徒,主動投敵行徑令人不齒,最終的結(jié)局無不大快人心

老杉說歷史
2026-02-06 12:59:08
中國男籃世預賽總結(jié):趙繼偉、胡金秋滿分,三人或無緣國家隊資格

中國男籃世預賽總結(jié):趙繼偉、胡金秋滿分,三人或無緣國家隊資格

籃球看比賽
2026-03-02 15:02:20
湖人大勝后喜憂參半,詹姆斯又迎里程碑,未來一周連遇強敵

湖人大勝后喜憂參半,詹姆斯又迎里程碑,未來一周連遇強敵

謝說籃球
2026-03-02 15:45:32
抵債的方式能有多離譜?網(wǎng)友:賠了我八個車位

抵債的方式能有多離譜?網(wǎng)友:賠了我八個車位

另子維愛讀史
2026-02-28 20:39:11
曾是京城第一名媛,嫁葉劍英兒子僅24天便離婚,如今已成資本大佬

曾是京城第一名媛,嫁葉劍英兒子僅24天便離婚,如今已成資本大佬

小熊侃史
2026-03-01 17:29:14
伊朗外長:美國是在侵略,伊朗有權自衛(wèi),將不惜一切代價,沒有任何限制

伊朗外長:美國是在侵略,伊朗有權自衛(wèi),將不惜一切代價,沒有任何限制

極目新聞
2026-03-02 15:26:42
哈梅內(nèi)伊剛死,美媒一語驚人:看來對中國來說,伊朗并沒那么重要

哈梅內(nèi)伊剛死,美媒一語驚人:看來對中國來說,伊朗并沒那么重要

阿芒娛樂說
2026-03-02 14:55:21
早已走投無路!向太揭露曲婉婷真實境遇,這下牢a的話不得不信

早已走投無路!向太揭露曲婉婷真實境遇,這下牢a的話不得不信

一盅情懷
2026-03-02 13:59:03
2026-03-02 16:04:49
侑虎科技UWA incentive-icons
侑虎科技UWA
游戲/VR性能優(yōu)化平臺
1552文章數(shù) 986關注度
往期回顧 全部

科技要聞

榮耀發(fā)布機器人手機、折疊屏、人形機器人

頭條要聞

牛彈琴:伊朗之戰(zhàn)比俄烏之戰(zhàn)更生猛 給世界5個深刻教訓

頭條要聞

牛彈琴:伊朗之戰(zhàn)比俄烏之戰(zhàn)更生猛 給世界5個深刻教訓

體育要聞

卡里克主場5連勝!隊史第2人通過最大考驗

娛樂要聞

美伊以沖突爆發(fā),多位明星被困中東

財經(jīng)要聞

金銀大漲 市場仍在評估沖突會否長期化

汽車要聞

國民SUV再添一員 瑞虎7L靜態(tài)體驗

態(tài)度原創(chuàng)

藝術
房產(chǎn)
旅游
游戲
軍事航空

藝術要聞

2025北京青年美術作品展 | 油畫作品選刊

房產(chǎn)要聞

濱江九小也來了!集齊海僑北+哈羅、寰島...江東教育要炸了!

旅游要聞

常州永州雙城文旅亮相上海,超值福利邀你踏青出游

三角洲玩家沒續(xù)艦長遭主播毀號!一億資產(chǎn)30秒清空

軍事要聞

美軍動用新型武器:山寨伊朗的

無障礙瀏覽 進入關懷版