2010-07-26 3 views
1

디버깅 목적으로 모든 내 개체에 필요한 RAM 목록을 가져 오는 방법이 있습니다. 하위 개체 등등, 텍스트 파일에 작성?C# : 모든 하위 개체가 필요한 개체의 RAM 양은 얼마입니까? 객체에 필요한 RAM 목록 가져 오기?

Visual Studio를 실행하지 않고 프로덕션 모드에서 실행하는 동안이 값을 가져와야합니다. 예를 들어 x 분마다. 이것이 가능한가? 어떻게해야합니까?

당신은 프로세스의 크기를 모니터링하는 도구를 만들 수 있습니다, 사전에 당신에게

크리스

+0

을 직렬화하고 번호를 확인하십시오. 바이트 수 – Zaki

+0

모든 개체가 직렬화 가능하지는 않습니다. – Chris

+1

당신은 http://www.microsoft.com/downloads/details.aspx?FamilyId=A362781C-3870-43BE-8926-862B40AA0CD0&displaylang=en, http://memprofiler.com/ 및 http : // www. red-gate.com/products/ants_memory_profiler/index.htm – Zaki

답변

1

JetBrains DotTrace를 사용하여 메모리 프로파일 링을 할 수 있습니다. 30 일간의 평가판 만 제공되지만 특정 메모리 내 개체를 탐색하는 데는 탁월한 도구입니다.

0

를 대단히 감사합니다.
또는 실행중인 응용 프로그램의 별도 스레드에서이 작업을 수행하십시오. Process.GetProcessesByName() ...

+0

하지만 전체 프로세스가 아닌 객체 단위로 메모리가 필요합니다. 예를 들어 객체 a (b 및 c 포함)는 200MB, b는 150MB, c는 50MB를 사용합니다. – Chris

0

값 유형의 경우 sizeof()를 사용할 수 있어야합니다. 하지만 참조 유형에 상응하는 것이 있다고 생각하지 않습니다. 안전하지 않은 블록 내에서만 sizeof()를 사용할 수 있습니다.

2

windbg을로드하고 sos.dll을로드하고 프로세스에 연결하십시오. 파일 에 출력 한 후 !DumpHeap -stat (및 변형) 할

로그

psscor2.dll XML 파일에 힙 덤프 할 수 있습니다. (또는 ClrProfiler와 함께 사용하기 위해)

관련 문제