face-emo
face-emo copied to clipboard
en_us Localeでは、ScriptableObjectのリークが発生します
https://github.com/suzuryg/face-emo/blob/261ab2c18b55ca90736efe639a5b40d790011b61/Packages/jp.suzuryg.face-emo/Editor/Detail/Localization/LocalizationSetting.cs#L90
この件はLocalizationTableをリークしてしまい、C#オブジェクトと違ってエディター再起動までヒープに残ってしまいます。そのため、Resources.FindObjectsByTypeAll
などのヘルパーが非常に重くなり、いろんな操作が重くなります。
リークを確認した時点では16GBほどのヒープサイズになってました(メモリーダンプは解析できなかったので確定ではないが、再起動した後はここだけが急速に増えてました)
ハックではありますが、このような修正を入れたらオブジェクトの増加が止まりました
private static LocalizationTable en_us;
public static LocalizationTable GetTable(Locale locale)
{
if (locale == Locale.ja_JP)
{
return AssetDatabase.LoadAssetAtPath<LocalizationTable>($"{DetailConstants.LocalizationDirectory}/ja_JP.asset");
}
else
{
// en_US has the table in source code, not asset.
en_us = en_us != null ? en_us : ScriptableObject.CreateInstance<LocalizationTable>();
return en_us;
}
}