C# 为什么我的每个接口都占用2mb的RAM?
好的,我确实有一个关于在WinForms应用程序中实现接口的问题。基本上我已经建立了一个控件库。每个控件都定义了一个与主窗体交互的接口 我一直在做的是创建一个接口类型的属性处理程序,然后像这样做 在控件上: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
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工作得很好,回答了我的问题。我现在已经能够看到我的问题是什么了!