2012-10-17 36 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

相关问题