可以說,我有一個真正的大對象類,它可以說是從數據庫中提取數據到內存中的對象和加載數據的列表。這是爲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',只需將兩個引用存儲到同一個對象。 –
謝謝你想確認它是一樣的:) –