最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

內(nèi)存分析

2020-05-21 10:36 作者:unity_某某師_高錦錦  | 我要投稿

內(nèi)存消耗是關(guān)鍵的性能指標(biāo),在內(nèi)存資源有限的平臺(tái)(例如低端移動(dòng)設(shè)備)上尤為重要。

分析內(nèi)存消耗

使用 Unity Bitbucket 提供的開源內(nèi)存可視化工具可實(shí)現(xiàn) Unity 中的內(nèi)存問題的最佳診斷。此工具的集成非常簡(jiǎn)單,只需下載鏈接的代碼倉(cāng)庫(kù)并將包含的?Editor?文件夾放入項(xiàng)目中。

該工具可與 Unity 5.3 以上的任何版本結(jié)合使用。當(dāng)連接到使用 IL2CPP 構(gòu)建的應(yīng)用程序時(shí),此工具可以捕獲有關(guān)本機(jī)代碼和托管代碼內(nèi)存消耗情況的大量信息。

要使用該工具,只需使用 IL2CPP 腳本后端構(gòu)建項(xiàng)目并將其部署到適當(dāng)?shù)脑O(shè)備。連接 Unity 的常規(guī)編輯器內(nèi)部 CPU 性能分析器,然后打開 Memory Profiler 窗口(菜單:__Window__ >?MemoryProfilerWindow__)并選擇?Take Snapshot__。

設(shè)備上的應(yīng)用程序暫停一小段時(shí)間,此段時(shí)間會(huì)收集數(shù)據(jù)并傳輸?shù)?Unity Editor。然后,Unity Editor 會(huì)暫停以便解析收到的數(shù)據(jù);這可能需要很長(zhǎng)時(shí)間。對(duì)于消耗了大量?jī)?nèi)存的應(yīng)用程序,一次跟蹤可能需要 10–30 分鐘才能完成解析。

在此解析和加載操作期間,請(qǐng)耐心等待。

此截屏來(lái)自 iOS 設(shè)備上運(yùn)行的標(biāo)準(zhǔn)資源場(chǎng)景,其中顯示有超過四分之三的內(nèi)存使用量用于四個(gè)非常大的紋理,所有這些紋理都與飛機(jī)的機(jī)身有關(guān)。

此可視化視圖可以縮放。單擊應(yīng)用程序中的每個(gè)框即可查看有關(guān)該框的更多信息。

識(shí)別重復(fù)的紋理

一個(gè)常見的內(nèi)存問題是內(nèi)存中的資源重復(fù)。由于紋理通常是項(xiàng)目中消耗內(nèi)存最多的資源,因此紋理重復(fù)是 Unity 項(xiàng)目中最常見的內(nèi)存問題之一。

識(shí)別重復(fù)資源可采用的方法是查找兩個(gè)相同類型和相同大小的對(duì)象,這些對(duì)象看起來(lái)是從同一資源加載的。在新的內(nèi)存性能分析器的詳細(xì)信息面板中,檢查看似相同的對(duì)象的?Name?和?InstanceID?字段。

Name?字段基于資源文件(對(duì)象加載自該文件)的名稱;通常,該名稱是不包含文件路徑和擴(kuò)展名的文件名。InstanceID?字段表示 Unity 運(yùn)行時(shí)分配的內(nèi)部標(biāo)識(shí)號(hào);此數(shù)字在 Unity 游戲的單次運(yùn)行中是獨(dú)一無(wú)二的(1)。

此圖演示了此問題的一個(gè)簡(jiǎn)單示例。在圖的左側(cè)和右側(cè)是從 5.4 版內(nèi)存性能分析器的詳細(xì)信息面板中截取的截屏。這些截屏中顯示的資源是在內(nèi)存中單獨(dú)加載的兩個(gè)紋理。紋理具有相同的名稱和大小,表明它們可能是重復(fù)的。通過檢查項(xiàng)目的“Assets”文件夾,可以確定只有一個(gè)名為?wood-floorboards-texture?的資源文件,這更加證明了資源被重復(fù)加載。

內(nèi)存中的每個(gè) UnityEngine.Object 都在對(duì)象被創(chuàng)建時(shí)分配一個(gè)唯一的實(shí)例 ID。由于這兩個(gè)紋理具有不同的實(shí)例 ID,因此可以肯定它們代表了加載到內(nèi)存中的兩組不同紋理數(shù)據(jù)。

由于文件名和資源大小相同,而實(shí)例 ID 不同,可以肯定這兩個(gè)對(duì)象表示內(nèi)存中重復(fù)的紋理(注意: 如果項(xiàng)目中存在具有相同文件名的紋理,那么此判斷將不是絕對(duì)準(zhǔn)確的,但在文件大小也相同時(shí)則可能性非常高)。

AssetBundle 與資源重復(fù)

內(nèi)存中紋理和資源重復(fù)的最常見原因是 AssetBundle 卸載不當(dāng)。請(qǐng)參閱 Unity 的?AssetBundle 最佳實(shí)踐指南 (Best Practice Guide on AssetBundles)?以了解有關(guān)此問題的描述。關(guān)鍵部分是管理加載的資源 (Managing Loaded Assets)。

檢查圖像緩沖區(qū)、圖像效果和 RenderTexture 內(nèi)存使用情況

可以通過內(nèi)存可視化工具顯示需要向圖像和 RenderTexture 對(duì)象提供的渲染緩沖區(qū)的內(nèi)存需求情況。

上面的截屏演示了一個(gè)簡(jiǎn)單的場(chǎng)景,場(chǎng)景中應(yīng)用了 Unity 的一些電影圖像效果。圖像效果會(huì)分配臨時(shí)渲染緩沖區(qū)來(lái)執(zhí)行計(jì)算;尤其是泛光特效分配了幾個(gè)大小遞減的緩沖區(qū)。由于 Retina iOS 設(shè)備的高分辨率,這些臨時(shí)緩沖區(qū)消耗的內(nèi)存遠(yuǎn)遠(yuǎn)超過項(xiàng)目其余部分的總量。

例如 iPad Air 2 的分辨率為 2048x1536,這超出了通常針對(duì)現(xiàn)代游戲主機(jī)和 PC 的 1080p 分辨率,但卻是在平板設(shè)備上運(yùn)行。一個(gè)全屏臨時(shí)渲染緩沖區(qū)將占用全部的 24 或 36 兆字節(jié)內(nèi)存(具體取決于緩沖區(qū)的格式)。通過將渲染緩沖區(qū)的像素大小減半,可使該內(nèi)存減少 75%。這樣做通常不會(huì)顯著降低顯示結(jié)果的視覺品質(zhì)。

優(yōu)化圖像效果對(duì)臨時(shí)渲染緩沖區(qū)和其他 GPU 資源的使用的方法之一是創(chuàng)建單個(gè)“超級(jí)”(uber) 圖像效果,此特效將同時(shí)執(zhí)行所有不同的計(jì)算。使用 Unity 5.5 或更高版本時(shí),可使用新的?UberFX(可從?github?獲?。┸浖?;該軟件包提供了一個(gè)可配置的“超級(jí)”圖像效果,此特效可以執(zhí)行電影圖像效果提供的所有操作,而且開銷比單個(gè)圖像效果更低。


內(nèi)存分析的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
宁河县| 富源县| 梁山县| 阿拉善左旗| 全椒县| 明光市| 榕江县| 高雄县| 元阳县| 四会市| 武安市| 庆安县| 若尔盖县| 仁怀市| 弋阳县| 青浦区| 怀远县| 堆龙德庆县| 内丘县| 张家港市| 洪洞县| 临沭县| 天津市| 湖口县| 桐城市| 右玉县| 镶黄旗| 长岭县| 松原市| 盐源县| 云龙县| 临城县| 周至县| 湘潭县| 泰来县| 藁城市| 托里县| 淮阳县| 万山特区| 吴堡县| 长阳|