C# 反应UI内存使用
我最近重构了一个MVVM应用程序以使用ReactiveUI。基本上,我已经更改了ViewModels中的许多代码,以使用C# 反应UI内存使用,c#,mvvm,reactiveui,C#,Mvvm,Reactiveui,我最近重构了一个MVVM应用程序以使用ReactiveUI。基本上,我已经更改了ViewModels中的许多代码,以使用ReactiveLists、派生列表和observativePropertyHelpers。完成后,我注意到该应用程序的内存使用量从100MB增加到550MB(在完全相同的情况下,使用相同的数据和功能) 我从同一个类中有大量(~3000)个对象,并且使用VS中的诊断工具,我注意到这个类中的OAPH(它们是5个)使用了大量内存。起初,我假设线程有问题,所以我决定尝试在测试应用程序
ReactiveList
s、派生列表和observativePropertyHelper
s。完成后,我注意到该应用程序的内存使用量从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);
}
}
public类ItemViewModel:ReactiveObject
{
私人可观察财产帮助myVar1;
公共房屋MyProperty 1
{
获取{return myVar1.Value;}
}
公共项目视图模型()
{
myVar1=可观察的.Return(false).ToProperty(这,x=>x.MyProperty1);
}
}
我已经删除了另外3个与brievity完全相同的OAPH
我的主视图模型如下所示:
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);
}
}
public类MainViewModel:ReactiveObject
{
公共IReactiveList项{get;private set;}
公共主视图模型()
{
var items=新列表();
对于(int i=0;i<3000;i++)
{
添加(新的ItemViewModel());
}
项目=新的反应列表(项目);
}
}
这就是这个应用程序的全部内容。如果我运行它,它将使用35MB。如果我删除ItemViewModel
的构造函数中的代码,它只使用11.5MB。所以它似乎重现了我的高内存使用率
我的问题是:我做错什么了吗?ReactiveUI能处理这么多的项目吗?你得到了答案吗?我们遇到了同样的问题。还没有。Github上的问题仍然存在: