內存優化之GC.MarkDependencies性能
如何避免 GC.MarkDependencies優化
這個將會形成必定的時間,而且佔用的時間還不小,spa
翻譯一個遇到一樣問題的翻譯
1 你們好, 2 3 我有一個巨大的性能問題,我試圖以某種方式解決... 4 有沒有人遇到過這個問題GC.MarkDependencies須要大量的CPU時間?(見所附截圖) 5 6 它是如何發生的:在個人遊戲中,地圖(2D瓷磚地圖)在運行時產生的,由於玩家能夠選擇設置的地圖,他將探討。它們是使用協程生成的,以保持UI的響應(加載屏幕),但加載後,GC.MarkDependencies啓動它的工做,但須要很長時間才能完成,竊取寶貴的幀(在我最後的分析,它花了我65幀PC,一個i7-2670QM,在虛擬機內部運行) 7 它隱藏在Loading.UpdatePreloading內部,而且自從我加載個人地圖時開始,我知道我必須改變這個加載... 8 地圖加載/生成會產生一些垃圾,每一個地圖大約60kb(仍在工做),但我相信這不會致使上述問題... 9 10 當我說'生成',個人意思是:建立材質,指定TileSet紋理到它,建立網格,以支持每一個瓷磚,而後UV映射它相應的所需平鋪地圖(請參閱https://bitbucket.org/Chaoseiro/x-unitmx) 11 12 事情我仍然須要嘗試: 13 - 從預製件加載,而不是在運行時生成(我認爲這將是解決方案,但想聽到也面臨這個問題的人的想法) 14 - 使用Application.LoadLevelAdditiveAsync(我相信這將無助,由於GC.MarkDependencies觸發地圖加載後) 15 - 其餘我還不知道:) 16 17 那麼,有沒有人面對過,解決了這個問題? 18 預製路線是可能的解決方案嗎? 19 20 我能夠嘗試解釋更好或提供更多的信息,若是須要:) 21 22 提早謝謝!
解決方法是:code
我找出緣由。刪除Resources.UnloadUnusedAssets。一些低端手機可能會致使GCC收集屢次,CPU次數的成本。您可使用Resources.UnloadAssets(「」); 手動。這個API不能致使GC。