可以说,我有一个真正的大对象类,它可以说是从数据库中提取数据到内存中的对象和加载数据的列表。这是为WPF应用程序。新鲜共享引用对象时分配的内存c#.net?
public class MyClass {
public ReallyLargeObject largeObject;
//Other properties.
}
我有一个视图模型(VM1)对象,它具有将此类绑定到XAML的引用。
我需要另一个视图模型(VM2)只有MyClass的某些属性而不是大对象。
两种方案:
我可以分配VM2.myClass = VM1.myClass
var viewModel1 = new VM1() { myClass = new MyClass() { largeObject = new ReallyLargeObject(); //initialize other properties } }; var viewModel2 = new VM2() { myClass = viewModel1.myClass };
我可以创建类型的MyClass从VM1.myClass一个新的对象,但这次设置largeObject = null
var viewModel1 = new VM1() { myClass = new MyClass() { largeObject = new ReallyLargeObject(); //initialize other properties } }; var viewModel2 = new VM2(){ myClass = new MyClass(){ //initialize other properties } };
这两个视图模型在运行时都会在内存中相当长时间。
我正面临一个问题,第一种方法需要大量的内存和屏幕相当慢。
从原始对象创建一个更苗条的对象减少使用的内存?
我感到困惑的原因视图模型2在技术上只具有参考视图模型1
存储在两条包装的对象相同的对象引用时如何表现.NET对象?
它是否像其他语言一样只存储引用,并且堆中的对象分配的内存是相同的?
这就是引用的要点。您不会以任何方式复制'ReallyLargeObject',只需将两个引用存储到同一个对象。 –
谢谢你想确认它是一样的:) –