パラメータをCalculatorで参照するとき、Calculator.OnGetParameter()やCalculator.UnwatchParameters()で毎回GC Allocが発生する場合がある
Posted: 2023/10/28 04:08
いつもお世話になっています。
不具合かどうかはわかりませんが、以前のバージョンでは発生しなかった現象を確認したので、ご報告いたします。
OS: Windows11
Unityバージョン: 2021.3.31f1
Arborバージョン: 3.9.11
再現方法:
1.ステートマシンにintパラメータを追加
2.以下を毎フレーム実行
Ind.Add(Value1:intパラメータ、Value2:0)→Ind.Add(Value1:intパラメータ、Value2:左Int.AddのResult)→SetParameter(Intパラメータに代入)
3.プロファイラで確認すると、
Calculator.OnGetParameter()
Parameter.add_onChanged()
Delegate.Combine()
MulticastDelegate.CombineImpl() GC Alloc 176B
が発生していることを確認。
また再現できなかったのですが、手持ちのプロジェクトでは以下も同時に発生していました。
Calculator.UnwatchParameters()
Parameter.remove_onCHanged()
Delegate.Remove()
MulticastDelegate.RemoveImpl() GC Alloc 184B
不具合かどうかはわかりませんが、以前のバージョンでは発生しなかった現象を確認したので、ご報告いたします。
OS: Windows11
Unityバージョン: 2021.3.31f1
Arborバージョン: 3.9.11
再現方法:
1.ステートマシンにintパラメータを追加
2.以下を毎フレーム実行
Ind.Add(Value1:intパラメータ、Value2:0)→Ind.Add(Value1:intパラメータ、Value2:左Int.AddのResult)→SetParameter(Intパラメータに代入)
3.プロファイラで確認すると、
Calculator.OnGetParameter()
Parameter.add_onChanged()
Delegate.Combine()
MulticastDelegate.CombineImpl() GC Alloc 176B
が発生していることを確認。
また再現できなかったのですが、手持ちのプロジェクトでは以下も同時に発生していました。
Calculator.UnwatchParameters()
Parameter.remove_onCHanged()
Delegate.Remove()
MulticastDelegate.RemoveImpl() GC Alloc 184B