ReactiveUI内存使用情况

Dam*_*aib 6 c# mvvm reactiveui

我最近重构了MVVM应用程序以使用ReactiveUI。基本上,我已经更改了ViewModels中的许多代码以使用ReactiveLists,派生列表和ObservableAsPropertyHelpers。完成后,我注意到该应用程序的内存使用量从100MB增加到550MB(在完全相同的情况下,具有相同的数据和功能)。

我有来自同一个类的大量对象(约3000个),并且使用VS的诊断工具,我注意到该类的OAPH(它们有5个)占用了大量内存。最初,我假设线程问题,所以我决定尝试在测试应用程序中重现该问题。

为此,我创建了一个ViewModel:

public class ItemViewModel : ReactiveObject
{
    private ObservableAsPropertyHelper<bool> myVar1;
    public bool MyProperty1
    {
        get { return myVar1.Value; }
    }

    public ItemViewModel()
    {
        myVar1 = Observable.Return(false).ToProperty(this, x => x.MyProperty1);
    }
 }
Run Code Online (Sandbox Code Playgroud)

为了简便起见,我删除了另外三个完全相同的OAPH。

我的主要ViewModel如下所示:

public class MainViewModel : ReactiveObject
{
    public IReactiveList<ItemViewModel> Items { get; private set; }

    public MainViewModel()
    {
        var items = new List<ItemViewModel>();
        for (int i = 0; i < 3000; i++)
        {
            items.Add(new ItemViewModel());
        }
        Items = new ReactiveList<ItemViewModel>(items);
    }
}
Run Code Online (Sandbox Code Playgroud)

这就是此应用程序中的全部内容。如果我运行它,它将使用35MB。如果我删除的构造函数中的代码ItemViewModel,则仅使用11.5MB。因此,似乎重现了我的高内存使用率。

我的问题是:我做错什么了吗?ReactiveUI可以处理“很多”项目吗?