Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么我的每个接口都占用2mb的RAM?_C#_Memory_Interface - Fatal编程技术网

C# 为什么我的每个接口都占用2mb的RAM?

C# 为什么我的每个接口都占用2mb的RAM?,c#,memory,interface,C#,Memory,Interface,好的,我确实有一个关于在WinForms应用程序中实现接口的问题。基本上我已经建立了一个控件库。每个控件都定义了一个与主窗体交互的接口 我一直在做的是创建一个接口类型的属性处理程序,然后像这样做 在控件上: public interface ITest { void Test1(); void Test2(); } private ITest _testHandler; public ITest TestHandler { get { return _testHan

好的,我确实有一个关于在WinForms应用程序中实现接口的问题。基本上我已经建立了一个控件库。每个控件都定义了一个与主窗体交互的接口

我一直在做的是创建一个接口类型的属性处理程序,然后像这样做

在控件上:

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...
}

接口工作正常。我只是好奇为什么每一个都要占用这么多内存。我认为接口不应该真正影响性能

接口不占用内存;数据确实如此。实现类(除其他外)实际上占用了内存

我会寻找一个内存分析器,可以帮助你缩小占用这么多内存的范围。您可能一次又一次地创建不必要的对象,并且可以使用工厂模式进行改进,该模式将缓存可重用的对象

Viausl Studio(我认为高级版和终极版)有一个性能向导,其中包括内存分析(VS 2010和2012中的“分析”菜单下)


我用过并且喜欢它,但它不是免费的。但是它有14天的免费试用期,我可以帮你度过难关。

你是如何衡量他们的内存消耗的?你怎么知道他们占用了2兆内存(顺便说一句,一个接口不占用内存,它只是与编译器签订的合同。)接口不占用内存;数据确实如此。你的实现类(除其他外)实际上占用了内存。好吧,我想这是一个不适合问这种问题的地方。我是通过任务管理器进行测量的,这可能是一个糟糕的选择。我只是注意到,随着每个界面的实现,应用程序的内存一直在增加。Ty工作得很好,回答了我的问题。我现在已经能够看到我的问题是什么了!