Page 1 of 1

NodeGraph.csのownerBehaviourObjectプロパティで不要なGC Allocが発生する

Posted: 2022/12/28 05:43
by ooee
いつもお世話になっています。

不具合ではないのですが、不要なGC Allocが発生する部分に遭遇したので、ご報告いたします。

OS: Windows10
Unityバージョン: 2021.3.16f1
Arborバージョン: 3.9.2
再現方法:
NodeGraph.csのownerBahaviourObjectプロパティの336~342行目、
if (behaviour != null && !behaviour.attachedNode)
{
behaviour.delayAttachToNode += () =>
{
currentRootGraph.ChangedGraphTree();
};
}
で、ローカル変数をキャプチャしているため、このif文内が実行されなくてもGC Allocが発生しました。
参考:【Unity】ローカル変数をキャプチャする場合、その処理が実行されなくても GC Alloc は発生する https://baba-s.hatenablog.com/entry/2019/12/25/082000

Re: NodeGraph.csのownerBehaviourObjectプロパティで不要なGC Allocが発生する

Posted: 2022/12/28 06:18
by caitsithware
ご報告ありがとうございます。
該当の箇所は今後の更新で修正いたします。

実行されない箇所でもラムダ式でのローカル変数のキャプチャによりGC Allocが発生するC#の仕様は把握しておりますが、
事前にすべて対処してリリースするのも難しいのでご報告していただけるのは助かります。