2011-10-31 4 views
4

.net에서 프로세스가 사용하는 총 메모리를 계산하고 싶습니다. 총 메모리에는 페이지 파일과 RAM 사용이 모두 포함됩니다. 내가 발견 한 가장 가까운 것은 Process 클래스의 VirtualMemorySize64이지만 써드 파티 메모리 진단 소프트웨어가 보여주는 것처럼 전체 메모리 사용량보다 조금 더 낮습니다..net에서 프로세스가 사용하는 총 메모리를 얻거나 계산하는 방법은 무엇입니까?

+2

VirtualMemorySize64가 올바른 속성이어야하며 예상보다 작습니다. 어떤 다른 도구/카운터에 대해 이야기하고 있습니까? – Justin

+0

VirtualMemorySize64에서 얻은 것보다 큰 총 메모리를 항상 표시하는 VMMap을 사용합니다. – user1004959

+1

흥미 롭군요 - 확실하지 않습니다. 내 생각에 VMMap은 여분의 "메모리"(예 : "사용할 수없는"메모리)를 계산하지만, 나는 무엇을 볼 수 없습니다. – Justin

답변

0

감사합니다. 저스틴. 나는 System.Diagnostics.Process.VirtualMemorySize64을 사용하여 끝났다.

0

순전히 실제 메모리에 관심이있는 경우 WorkingSet64, "관련 프로세스에 할당 된 실제 메모리 양"을 원할 수도 있습니다. 이 값이 지속적으로 변동하고이 호출이 제공하는 값이 최신이 아닐 수도 있습니다. PeakWorkingSet64, "관련 프로세스에서 사용하는 최대 실제 메모리 양"을 확인할 수도 있습니다.

페이지 파일을 계산하려면 PagedMemorySize64을 사용하십시오. "이 속성에서 반환 된 값은 프로세스에서 사용하는 가상 메모리 페이징 파일의 현재 메모리 크기를 나타내며 운영 체제는 실제 메모리와 함께 가상 메모리 페이징 파일을 사용하여 각 프로세스의 가상 주소 공간을 관리합니다."

+0

이것은 프로세스가 사용하는 실제 메모리 만 포함하며 페이지 파일 사용을 포함하지 않습니다. – Justin

+0

죄송합니다. 방금 내 대답을 편집하여 페이지 파일 사용에 대한 내용을 포함 시켰습니다. – alykhalid

0

"내 프로세스에서 사용하는 전체 메모리"에 대한 정의는 정의되지 않았습니다. 메모리가 많으며 서로 다른 의미가 있으므로 정확히 정의하기 위해 대답해야 할 많은 질문이 있습니다. 다음은 그 중 일부입니다 :

  1. 코드와 데이터 모두 또는 데이터 만 포함합니까?
  2. 이 코드가 현재 다른 프로세스와 공유되는 경우 (예 : 두 프로세스 모두에서 사용하는 공용 DLL)는 어떻게됩니까?
  3. 할당 된 메모리 또는 할당 된 모든 메모리 만 포함합니까?
  4. 프로세스가 "공유"로 메모리를 할당 할 수 있지만 현재 다른 사람과 공유하지 않습니다. 따라서 어떤 작업 세트에도 나타나지는 않지만 실제로는 프로세스에 의해서만 사용됩니다.

귀하의 질문에 답변 할 수있는 우수한 두 부분으로 구성된 강의가 있습니다. 그러나 당신은 그것을보기 위해 당신의 시간의 2 시간을 투자 할 필요가있다. Part 1Part 2.

관련 문제