亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Unity3D實驗室之iOS真機閃退的解決方法

 更新時間:2018年02月02日 09:35:53   作者:koo叔  
下面小編就為大家分享一篇Unity3D實驗室之iOS真機閃退的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

問題的產生

這個問題一般發(fā)生在項目比較大,OO使用良好,泛型繼承用的較多的時候。第一次真機測試時,項目終于進入真機測試階段,之前都是在Unity編輯環(huán)境下開發(fā)測試,運行的都很良好,信心滿滿的打包安裝,結果閃退。。。,各種代碼調試,跟蹤都沒什么線索。這怎么辦?問題很可能出在了AOT的設置上。

解決方案

這個通常是因為你的程序編譯的時候給 trampoline 分配的空間太小,而你的程序中又大量使用了泛型、泛型方法調用和接口實現導致的。具體的解決方法就是在 Unity3D 的編譯選項 Player Setting 中有一個 AOT Compilation Options 條目,在這個選項條目中加上以下編譯參數就好了

nrgctx-trampolines=8192,nimt-trampolines=8192,ntrampolines=4096

加上以后,重新打包測試,看還有沒有問題

參數意思

關于上面的三個參數的意思分別如下:

nrgctx-trampolines=8192 這是留給遞歸泛型使用的空間,默認是 1024

nimt-trampolines=8192 這是留給接口使用的空間,默認是 128

ntrampolines=4096 這是留給泛型方法調用使用的空間,默認是 1024

什么是trampoline

Trampoline 是一些手寫的非常短小的用來在 Mono Runtime中執(zhí)行很多操作的Component Code。主要是通過 JIT 使用到的本地代碼宏在運行時動態(tài)生成的。它們通常都有與之相對應的 C 方法,在某些較為復雜的場景中,當 trampoline 無法勝任時,mono 運行時就會將這些復雜的操作交回給這些對應的 C 方法來執(zhí)行。這也可以看作是將 JIT 代碼的執(zhí)行權交回給 runtime 的一種方式。

這看起來明顯是為了提高 mono runtime 在執(zhí)行 C#代碼時候的效率,但還是有點不明白。

再來看看官方文檔關于 JIT Trampolines 和 AOT Trampolines 的介紹:

JIT Trampolines 這些 Trampoline 主要是 JIT 在首次調用某個方法的時候編譯方法用的。當 JIT 在編譯一個方法調用指令時,它并不會立刻就編譯這個被調用到的方法。實際上,它會先創(chuàng)建一個 JIT Trampoline,同時創(chuàng)建一個指向這個 trampoline 的調用指令。當這個 JIT Trampoline 在調用到的時候,它會再調用 mono_magic_trampoline() 方法來編譯這個 trampoline 實際指向的目標方法,然后將編譯后的方法的指針地址返回給這個指向它的 trampoline。這個過程呢稍微有點慢,所以呢,mono_magic_trampoline() 方法會優(yōu)化調用 JIT 代碼的過程,它會先嘗試調用已經通過 JIT 編譯過的方法而不是立即通過 trampoline 直接進行調用。這些都是通過在 tramp-.c 文件中的 mono_patch_callsiete() 方法來完成的。

AOT Trampolines

AOT Trampolines 和 JIT Trampolines 非常相似,但是 AOT Trampolines 接受的編譯參數不是一個 Mono 方法而是一個 image+token 對。如果傳入的用于編譯的 image+token 對所指向的方法已經經過 AOT 編譯過了,那么再次編譯這個 image+token 對時,就會直接返回這個已編譯方法的指針地址而不需要再次加載這個方法的元數據進行再次編譯了。

IMT Trampolines也是用于優(yōu)化接口調用效率的。

Trampolines 存在的價值就是為了減少 C#代碼在 mono runtime 中運行時的性能損耗,提高 C#代碼的執(zhí)行效率。

總結

當遇到類似問題時可以試試上面的方法。

以上這篇Unity3D實驗室之iOS真機閃退的解決方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • iOS ScrollView實現自動布局的方法(適用Swift 3.0 )

    iOS ScrollView實現自動布局的方法(適用Swift 3.0 )

    傳說中有一個美工ios開發(fā)者在遇到這個問題的時候特意跑到蘋果總部去咨詢如何對scrollview進行自動布局。當然大家不用去了,下面這篇文章就來給大家介紹關于iOS ScrollView實現自動布局的方法,文中的語法同樣也適用Swift 3.0 ,需要的朋友可以參考下。
    2017-12-12
  • 詳解iOS 裁剪圓形圖像并顯示(類似于微信頭像)

    詳解iOS 裁剪圓形圖像并顯示(類似于微信頭像)

    本篇文章主要介紹了iOS 裁剪圓形圖像并顯示(類似于微信頭像),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • iOS使用xib手動實現動畫效果的方法

    iOS使用xib手動實現動畫效果的方法

    下面小編就為大家分享一篇iOS使用xib手動實現動畫效果的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • iOS中UIAlertController設置自定義標題與內容的方法

    iOS中UIAlertController設置自定義標題與內容的方法

    UIAlertController是iOS8推出的新概念,取代了之前的 UIAlertView和UIActionSheet(雖然現在仍可以使用,但是會有警告)。下面這篇文章主要給大家介紹了關于iOS中UIAlertController如何設置自定義標題與內容的相關資料,需要的朋友可以參考下。
    2017-10-10
  • iOS實現簡單分欄效果

    iOS實現簡單分欄效果

    這篇文章主要為大家詳細介紹了iOS實現簡單分欄效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • iOS中幾種定時器的實現小結

    iOS中幾種定時器的實現小結

    這篇文章主要介紹了iOS中幾種定時器的實現小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • iOS中修改UITextField占位符字體顏色的方法總結

    iOS中修改UITextField占位符字體顏色的方法總結

    這篇文章給大家分享了iOS中修改UITextField占位符字體顏色的三個方法,分別是使用attributedPlaceholder屬性、重寫drawPlaceholderInRect方法和修改UITextField內部placeholderLaber的顏色,下面我們一起來看看詳細的方法介紹。
    2016-09-09
  • iOS中定位當前位置坐標及轉換為火星坐標的方法

    iOS中定位當前位置坐標及轉換為火星坐標的方法

    這篇文章主要介紹了iOS中獲取當前位置坐標及轉換為火星坐標的方法,這里的火星坐標指的是我國專門研制的一種加密的坐標系統...需要的朋友可以參考下
    2016-02-02
  • 講解iOS開發(fā)中對音效和音樂播放的簡單實現

    講解iOS開發(fā)中對音效和音樂播放的簡單實現

    這篇文章主要介紹了iOS開發(fā)中對音效和音樂播放的簡單實現,代碼基于傳統的Objective-C,需要的朋友可以參考下
    2015-11-11
  • iOS開發(fā)之導航欄各種右滑返回失效的解決方法匯總

    iOS開發(fā)之導航欄各種右滑返回失效的解決方法匯總

    這篇文章主要給大家總結介紹了關于iOS開發(fā)教程之導航欄各種右滑返回失效的解決方法,文中通過示例代碼介紹的非常詳細,對各位iOS具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-08-08

最新評論