2008-10-21 2 views

답변

2

아마도 코드에서 호출 할 수있는 코드를 요청할 것입니다. (알고 싶습니다.)하지만 다른 사람들이 특정 코드를 찾고 있지 않은 경우를 대비하여 Ants 프로파일 러 [http://www.red-gate.com/Products/ants_profiler/index.htm]]를 언급해야한다고 느꼈습니다. 사용중인 메모리 양을 포함하여 실행 중일 때 코드에 대한 모든 종류의 정보를 알려줍니다. 자신의 웹 사이트에서

...

프로필 메모리는 응용 프로그램이 메모리를 사용하는 방법을 이해하고, 메모리 누수를 찾습니다. 메모리 프로파일 러 을 사용하면 프로그램의 실행 시점에 어떤 지점에서 스냅 샷을 찍을 수 있으므로 그 시점에서 사용중인 메모리는 입니다. 응용 프로그램이 실행되는 동안 다른 시간에 스냅 샷을 여러 번 가져갈 수 있으므로 상태를 비교할 수 있습니다.

+0

실제로 프로그래밍 방식의 구현을 찾고 있습니다. 하지만 ANTS Profiler가 올바른 상황에서 유용 할 수 있다는 것에 동의합니다. :) – Bullines

3
SIZEOF 값 유형을 사용할 수 있습니다

또한 .NET에 몇 가지 힌트와 함께 사용할 수 있습니다 Marshal.SizeOf있다 : 즉 정확하게 총 아니다

http://www.pixelicious.net/2008/07/03/exception-trying-to-get-the-size-of-a-c-class-using-marshalsizeof

하지만 ... 왜냐하면 런타임은 동기화 블록과 같은 것에 대해 클래스에 여분의 바이트를 할당하기 때문에 비용이 많이 든다.

http://msdn.microsoft.com/en-us/library/ms404386.aspx

또는 멋진 모든 종류의 것들을 할 수 있습니다 windbg를 같은 무료 도구 : 당신이 것은 이런 종류의 측정에 정말 관심이 있다면

그러나, 당신은 프로파일 링 API를 사용해야합니다.

1

프로필러가 없어도됩니다. 단일 클래스에 대해서만 어렵습니다. here을 참조하십시오.

2

SOS 디버깅 라이브러리를 사용해보십시오. 거기있는 것이 최선입니다. 기사 herehere

0

답장을 보내 주셔서 감사합니다. 공격의 초기 계획은 객체의 대부분이 직렬화 될 것이므로 다음과 같을 것이라고 생각합니다.

using (MemoryStream memstream = new MemoryStream()) 
{ 
    BinaryFormatter formatter = new BinaryFormatter(); 

    try 
    { 
     formatter.Serialize(memstream, myObjectOfObjects); 
     mem_footprint += memstream.Length; 
    } 
    catch 
    { 
     // not a serializable object 
    } 
} 
관련 문제