免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

如何理解UnityProfiler內存分析問題

本篇文章為大家展示了如何理解Unity Profiler內存分析問題,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

創新互聯專注為客戶提供全方位的互聯網綜合服務,包含不限于網站設計、成都網站制作、鶴山網絡推廣、小程序設計、鶴山網絡營銷、鶴山企業策劃、鶴山品牌公關、搜索引擎seo、人物專訪、企業宣傳片、企業代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創新互聯為所有大學生創業者提供鶴山建站搭建服務,24小時服務熱線:13518219792,官方網址:m.newbst.com

在使用Unity開發游戲的過程中,借助Profiler來分析內存使用狀況是至關重要的。但許多開發者可能還對Profiler中各項數據表示的含義不甚明確,小編將針對Profiler內存分析相關的問題及解答,與大家進行分享。

要想完全發揮Profiler內存分析的威力,首先要做的就是了解Profiler展示的數據所表達的含義,以及到底哪些模塊所使用的內存才會被統計到Unity的Profiler中。Profiler涉及到的知識點還有很多,我們今天先從中挑選一些大家常有的疑問來作解答。

1.    在Unity的Profiler中看到的總內存使用和我使用其它工具看到的系統內存占用不太一樣,這是為什么呢?

Profiler中看到的內存是通過Unity自身引擎看到的內存分配,凡是引擎Allocation和Deallocation的內存,引擎均有記錄,所以我們可以給出確切的引擎內存占用信息。但是,仍有其他內存我們是無法獲知的。

比如,如果引擎使用了第三方庫,那么庫分配的內存我們是無法進行統計的。另外,在移動設備上大家看到的內存,其實都要比Profiler大很多,這是因為不管是通過Xcode的Instrument還是通過Android的USS,其記錄的真實物理內存都包括兩部分,一個是真實Used的物理內存,另一個則是緩存的(Cached)的物理內存。這是OS所決定的,Android和iOS系統在資源不使用時均不會立即將其進行回收,而是將其放在緩存的物理內存中,以便下次再用時,可以快速地加載。當系統發現App的內存不夠用時,才會在底層調用一個memory killer線程來輪詢緩存物理內存,進而為app來清理內存。而Unity Profiler記錄的則是目前真實使用的物理內存,即上述所說的第一部分。因此,當游戲運行時間越長,Profiler分配內存和通過其他軟件獲得的系統內存差距會越大。

因此,只要所使用的第三方庫不存在內存泄露問題,我們一般都建議只需要查看Profiler即可,只要Profile中的內存可以保證正常升高和回落,那么引擎這邊分配的內存就是沒有問題的。

2.    我們做項目的時候發現有時profiler中System.ExecutableAndDlls這項占用很多,有什么解決辦法嗎?

“System.ExecutableAndDlls”該項顯示的是執行文件和所調用的庫(物理、渲染、IO等系統庫)的總和。請不用擔心該選項的數值,因為很多Application均在共用這些庫,并且它對于真實游戲的內存壓力非常小,而且也不會導致OS因為該內存來Kill掉游戲。

3.    為什么在Profiler中的Simple模式下,Used Total的數值不等于其右邊各項Unity,Mono,GfxDriver,FMOD與Profiler總和呢?

其實在Unity中,Used Total的計算公式為Used Total = Unity + Mono + GfxDriver + Profiler + additionalUsedMemory。公式中的additionalUsedMemory項在profiler中并沒有顯示,因為這一項一般情況下都為0,只在某些特殊發布平臺下才會有數值(一般Android,PC和IOS都為0)。因此一般情況下Used Total的值就是除FMOD之外各項的總和了。當然,這個規則對于Reserved Total是同樣適用的。

4.    我們項目的資源主要使用AssetBundle動態加載資源,發現Profiler中Detailed模式下PersistentManager.Remapper一項占用時多時少,這一項主要是做什么的呢?

Remapper主要提供文件的持久化存儲,包括各種序列化的asset,項目的setting文件等,維護文件系統的中的文件與內存中數據的對應關系。那么如果項目大量使用AssetBundle的話,在對AssetBundle進行Unload之前都會需要占用Remapper的內存的。而Remapper本身的實現使用內存池,其數值只會增大,那么為了使Remapper占用的內存保持在一個穩定的數值上,我們需要每次在加載一定數量的AssetBundle之后進行Unload操作,而不要一次性把所有AssetBundle都加載后才調用Unload。(這樣的操作對維持整個mono heap的大小也是至關重要的,因為mono heap本身也是只增大不減小的)

5.     我們在Editor中調試項目的時候發現紋理的內存大小是其本身大小的兩倍,是因為Unity把內存和顯存的大小都計算進去了嗎?

其實并不是這個原因,因為Editor本身會保有紋理的一份內存,在Editor下進行profiler會把Editor本身所使用的紋理大小也計算進去,因此會有內存變為兩倍的情況。我們官方并不建議在Editor下對項目進行性能調試,而是務必要在真機上跑編譯好的項目,然后連接profiler進行調試,只有這樣才能得到真正精確的測試數據。

上述內容就是如何理解Unity Profiler內存分析問題,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注創新互聯行業資訊頻道。

本文標題:如何理解UnityProfiler內存分析問題
URL分享:http://m.newbst.com/article36/jeiipg.html

成都網站建設公司_創新互聯,為您提供電子商務網站策劃靜態網站做網站網站營銷網站內鏈

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

網站托管運營