【Unity】Luaが使える様になるプラグイン「MoonSharp」のメモリ使用量やGCを削減する

DEVELOP, Unity

C#でLuaを使用可能にするMoonSharp.

公式ページ

http://www.moonsharp.org

便利に利用していたら、少し気になるGCが発生しました。どうも Stack の数が多すぎるみたい。モバイル開発の場合はそこまで必要としないことが多くメモリ使用量削減のために多すぎる Stack の数を調整してみました。使い方を誤っているのか分かりませんが、凝った演出を Lua で書いていくと、思っている以上にコルーチンの作成なんかでGC Allocが頻繁に発生する。

修正箇所

internal sealed class ExecutionState
{
    public FastStack ValueStack = new FastStack(131072);
    public FastStack ExecutionStack = new FastStack(131072);
}
sealed partial class Processor
{
    FastStack m_ValueStack = new FastStack(131072);
    FastStack m_ExecutionStack = new FastStack(131072);
}

この2か所のスタック数を 2048 など減らすことでメモリ使用量も減り、今回の場合 GC も減らすことが出来ました。

Posted by kazupon