-
Notifications
You must be signed in to change notification settings - Fork 7
Open
Description
バージョン:Kamishibai.Hosting 3.0.1
ViewModelで大きなオブジェクトを扱う場面があり、画面遷移後には使用されたメモリはGCに回収してもらいたい。
現状は画面遷移時にNavigationStackクラスに参照を保持しているためにメモリーリークがおこるようです。
再現手順
https://zenn.dev/nuits_jp/books/introduction-to-kamishibai/viewer/02-getting-started
上記のページまで作成、FirstViewModelを次のように改修する
using Kamishibai;
using System.Collections.ObjectModel;
namespace GettingStarted;
[Navigate]
public class FirstViewModel : IPausingAware
{
public FirstViewModel(string message)
{
Message = message;
Items.Add(new ChonkyClass()); // 大きなオブジェクトの例
}
public string Message { get; }
public ObservableCollection<ChonkyClass> Items { get; private set; } = new();
public void OnPausing(PreForwardEventArgs args)
{
Items.Clear();
}
}
public class ChonkyClass
{
public int[] Array;
public ChonkyClass()
{
Array = new int[100000000];
}
public int Id => GetHashCode();
}プログラムを実行しNavigateボタンを何度も押下する
タスクマネージャーでメモリ使用量を観察する
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels

