2012-10-17 34 views
0

好的,我有一個關於在WinForms應用程序中實現接口的問題。基本上我有一個我建立的控制庫。每個控件都有一個與主表單交互的接口。爲什麼我的每個接口都需要2MB的RAM?

我一直在做的是創建一個屬性處理程序,它是接口的類型,然後像這樣做。

在控制:

public interface ITest { 
    void Test1(); 
    void Test2(); 
} 

private ITest _testHandler; 

public ITest TestHandler { 
    get { return _testHandler; } 
    set { _testHandler = value; } 
} 

在主要形式有:

public MainForm : Form, MyControl.ITest { 

    public MainForm() { 
     InitializeComponent(); 
     MyTestControl.TestHandler = this; 
    } 

    // Implementing methods here... 
} 

接口是否正常工作。我只是好奇,爲什麼它會爲每一個佔據如此之多的內存。我不認爲接口應該真的影響性能。

+8

你怎麼測量他們的內存消耗? – MoonKnight

+2

你怎麼知道他們佔用2兆內存(順便說一句,*接口*不佔用內存,它只是一個與編譯器的合同。) –

+2

接口不佔用內存;數據確實。你是實現類(等等)是實際佔用內存的東西。 –

回答

1

接口不佔用內存;數據確實。你是實現類(等等)是實際佔用內存的東西。

我會尋找一個內存分析器,它可以幫助您縮小佔用這麼多內存的範圍。您可能一次又一次地創建對象,這些對象不是必需的,可以使用Factory模式進行改進,這樣可以緩存可以重用的對象。

Viausl工作室(我覺得Premium和Ultimate版本),有包括內存分析性能嚮導(分析菜單下的VS 2010和2012年)

我已經使用Ants Memory Profiler喜歡它,但它不是免費的。不過,它確實有14天的免費試用版,可以幫助你渡過難關。

+0

Ty完美地工作並回答我的問題。我現在已經能夠看到我的問題了! – meanbunny

相關問題