2012-10-17 2 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 메가의 RAM을 차지하고 있음을 어떻게 알 수 있습니까? (btw, * 인터페이스 *는 RAM을 차지하지 않습니다. 단지 컴파일러와의 계약입니다.) –

+2

인터페이스가 메모리를 차지하지 않습니다. 데이터 않습니다. 구현 클래스 (다른 것들 중에서)는 실제 메모리를 차지하는 클래스입니다. –

답변

1

인터페이스가 메모리를 차지하지 않습니다. 데이터 않습니다. 구현 클래스 (다른 것들 중에서)는 실제 메모리를 차지하는 클래스입니다.

메모리 프로파일 러가 너무 많은 메모리를 차지하는 범위를 좁히는 데 도움이 될 것입니다. 필요하지 않은 객체를 반복해서 만들고 다시 사용할 수있는 객체를 캐시하는 팩토리 패턴으로 개선 할 수 있습니다.

Viausl 스튜디오 내가 Ants Memory Profiler을 사용했다

(VS 2010 년과 2012 년에 분석 메뉴 아래)과 같은 메모리 분석을 포함하는 성능 마법사가 (필자는 프리미엄 및 Ultimate 버전) 생각하지만, 무료 아니에요 . 그러나 그것은 14 일간의 무료 평가판을 제공합니다.

+0

완벽하게 작동하고 내 질문에 대답하는 Ty. 나는 지금 나의 문제가 무엇인지 알 수 있었다! – meanbunny

관련 문제