2008-10-31 3 views
4

저는 VB6 응용 프로그램과 .Net 응용 프로그램 간의 메모리 사용 공간을 비교하려고했습니다. 둘 사이의 평균 차이를 결정하려고합니다..Net 및 VB6 응용 프로그램의 메모리 사용량 비교

닷넷 코드는 대부분 VB6의 직접 번역이며, 대부분 C#에서 프로그래밍되는 것과 동일한 명령어를 사용합니다. 따라서 사과와 오렌지의 비교 일 뿐이지 만 기능적으로 (논리적으로는 그렇지는 않지만) 동등한 프로그램에 대한 비교입니다. 나는 나 응용 프로그램의 메모리 사용량을 결정하는 데 도움이 Process Explorer을 사용하고

, 그러나 나를 당황 남아있는 몇 가지 영역이 있습니다 : 나는 전체 메모리를 결정하기 위해 노력했습니다

  1. 소비. 어떤 프로세스 메모리 열을 사용해야합니까? 지금까지 Working Set에 대해 살펴 보았습니다.
  2. 응용 프로그램 내의 DLL 크기 비교 PExplorer는 Size, WS Total 및 기타 WS 카운터를 보여줍니다. 어떻게 해석 할 수 있습니까? 그리고 Size가 WS Total과 다른 이유는 무엇입니까?

지금까지 WS Total에는 WS Private 및 WS Shareable이 모두 포함되어 있습니다. 따라서 WS Total을 사용하는 것은기만적인 방법 일 수 있습니다. 또한 .Net exe memory footprint과 같은 질문에서 .Net 작업 세트가 일반적으로 있어야하는 것보다 큰 것을 읽었습니다. 메모리가 부족한 환경에서 프로세스를 인스턴스화하면 128MB의 VM은 작업 세트 크기를 최소한으로 줄일 수 있다고 말하십니까?

도움이나 의견이 있으면 크게 감사하겠습니다.

답변

3

여기에 Mark Russinovich가 good essay입니다.

SetProcessWorkingSetSize (GetCurrentProcess(), -1, -1) Win32 API 호출을 사용하여 수동으로 응용 프로그램의 작업 집합을 줄일 수 있습니다. 이것은 시스템의 메모리가 부족한 상태에서 Windows가 수행하는 작업이지만, 이러한 상황이 발생했을 때 제어하면 조사를 위해 .NET 응용 프로그램의 작업 집합을 최소 크기로 분리 할 수 ​​있습니다.

+0

나는 그 에세이를 읽었으며, 그 많은 세부 사항에 실제로 들어가지 않았기 때문에 나는별로 감동하지 않았다. 어떤 DLL이 예를 들어 더 많은 리소스를 차지합니까? 그리고 분석에 약간의 결함이있었습니다. 제 경우에는 원본 코드와 원본 코드를 가능한 한 가깝게 일치시킵니다. –

+0

두 번째 URL이 작동하지 않습니다. 작업 집합을 줄이는 방법에 대한 자세한 정보를 제공 할 수 있습니까? –

+0

링크가 영구적으로 끊어 졌으므로 사용할 Win32 API 호출을 추가했습니다. – RoadWarrior