如何循環利用string來減少記憶體破碎(Memory Fragment)的問題?

来源:互联网 发布:复旦大数据学院专业 编辑:程序博客网 时间:2024/04/29 03:28

使用Unity開發遊戲有個很重要的課題

是要盡量避免非預期性的觸發GC.Collect

因為執行GC.Collect會容易造成遊戲的卡頓

如果是非靜止的畫面

就會給玩家遊戲效能不好的壞印象!!!


在C#內string的使用跟運算幾乎都會配置新的記憶體空間

不再使用的string就會進入GC(Garbage Collection)

當記憶體不足的話就會自動觸發GC.Collect

而大量的配置新的記憶體空間也會造成記憶體破碎


要避免這些問題

就要把string循環利用


那要怎麼把string改成能循環利用呢

  1. 將string用class包裝起來,來達成可循環利用的效果
  2. 使用pointer來複寫C# string的原生function(會造成GC的function)
  3. 寫個class來管理string class

哪些function會造成GC請參考~

如何在Unity(C#)內使用pointer?


一些常用且需要複寫的function大致如下:

    append - 取代原本string相加

    insert - 取代原本insert

    ToString - 複寫Object.ToString為了避免誤用到原本的function

    toUpper - 小寫英文轉大寫

    toLower - 大寫英文轉小寫

    subString - 擷取部分字串

    format - 可以依照企劃面的需求自定義格式化規則

    getHashCode - 可在字串比對用到

    replace - 置換字串

    remove - 移除字串




0 0
原创粉丝点击