2010-02-01 3 views
3

시스템 트레이에서 실행되는 C# (.net 3.5)으로 작은 응용 프로그램을 개발했습니다. 기본적으로 RSS 피드는 5 분마다 확인하고, 마지막으로 확인한 이후로 새 피드가 있으면 ballonontip을 표시하고 .net 3.0/3.5의 텍스트 음성 변환 엔진을 사용하여 헤드 라인을 읽습니다. 가져온 피드의트레이 응용 프로그램은 xp에서 40MB, win7에서 10MB를 사용합니다.

잘 작동하지만 Windows7에서는 실행 중에 약 9-10mb가 걸리지 만 XP에서는 39-40mb가 걸리는 것으로 나타났습니다. 이유가 없습니다. 아무도이게 뭔지에 대해 아무것도 몰라?

답변

5

Windows 7은 일부 구성 요소에서 .net을 사용하므로 프로세스와 시스템간에 많은 메모리가 공유 될 수 있습니다.

XP에서는 모든 .Net 어셈블리가 시스템의 일부 프로세스에 의해로드되지 않으므로 메모리가 프로세스에서 비공개로 나타납니다.

+0

음 ... 오, 논리처럼 보입니다, 감사합니다! –

+0

프로세스의 메모리 사용량을 Sysinternals (http://technet.microsoft.com/en-us/sysinternals/dd535533.aspx)의 VmMap 또는 SOS 확장자가있는 WinDBG (고급 도구)를 사용하여 확인할 수 있습니다. – munissor

1

작업 관리자의 Mem Usage (메모리 사용) 열의 수치가 표시됩니까? 그런 다음 작업 세트 크기를보고 있습니다. RAM에로드 된 응용 프로그램에서 사용하는 활성 메모리의 양입니다. 이것은 당신이 비교하기를 원하는 것이 아닐 수도 있습니다. 응용 프로그램을 최소화하십시오. Mem Usage가 어떻게 크게 떨어지는 지 확인하십시오. 응용 프로그램이 최소한의 메모리를 사용하면 더 적은 메모리를 사용한다는 의미는 아닙니다. 즉, Windows가 곧 응용 프로그램을 사용하지 않고 메모리를 RAM에서 페이징 파일로 바꾼다고 생각합니다. 비교할 VM 크기 열을 확인하십시오. 물론 작업 세트 크기가 다른 이유에 대해 여전히 자문 할 수는 있지만 그 질문은 대답하기가 훨씬 어렵습니다. 다른 메모리 수치에 대한 설명은 here을 참조하십시오.

관련 문제