Unity Mono運行機制分析及內存優化


一、Mono原理

  此處簡單介紹下Mono這個奇葩,主要通過Mono可以輕松實現跨平台,目前使用Unity開發手游Android平台大多使用Mono實現,但是誅仙手游使用il2cpp技術。具體il2cpp知識大家可以度娘。

二、內存分配機制

  

  上圖為內存分配策略,但是在此結合實踐經驗有bug存在,當分配大塊內存特別明顯,來回分配與切換應用會崩潰,主要是GC不夠及時即使是每次分配完手動GC也不會立即釋放。

三、內存泄漏原因

  Mono是如何判斷已用內存中哪些是不再需要使用的呢?是通過引用關系的方式來進行的。Mono會跟蹤每次內存分配的動作,並維護一個分配對象表,當GC的時候,以全局數據區和當前寄存器中的對象為根節點,按照引用關系進行遍歷,對於遍歷到的每一個對象,將其標記為活的(alive)。  

四、內存優化

  1、分配內存盡量小,避免申請大塊內存,一旦多個大塊內存同時存在並且無法釋放,則會導致內存過高應用崩潰。

  2、靜態類對象及時卸載

五、參考文章:

  [1]http://wetest.qq.com/lab/view/135.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM