내 컴퓨터 (XP, 64)에서 ASP.net 작업자 프로세스 (w3wp.exe)는 항상 5.5GB의 가상 메모리가 예약되어 시작됩니다. 이것은 호스팅하는 웹 응용 프로그램과 상관없이 발생합니다 (아무 것도 될 수 있습니다. 심지어 aspx의 빈 웹 페이지 일 수도 있습니다).누가/무엇을 예약했는지 확인 w3wp.exe에서 5.5GB의 가상 메모리
가상 메모리의이 오래된 큰 덩어리는 프로세스가 시작될 때 예약되어 있으므로 점진적인 메모리 누출이 아닙니다.
windbg에서 주위를 기웃 거리며 설명하는 것은 메모리가 개인, 예약 및 RegionUsageIsVAD라는 것을 보여줍니다. 이는 VirtualAlloc을 호출 한 사용자의 작업 일 수 있음을 나타냅니다. 또한 문제의 메모리가 각각 1GB의 큰 덩어리 4 개와 작은 여러 개의 작은 덩어리 (각각 1/4GB)로 할당/예약된다는 것을 보여줍니다.
그래서 내가 VirtualAlloc을 호출하고이 메모리를 모두 예약해야 하는지를 알아야합니다. 어떻게해야합니까?
w3wp.exe가 svchost.exe (IIS/ASP.Net 필터)에서 시작한 프로세스이기 때문에 메모리 할당 전에 프로세스에 디버거를 연결하는 것이 어렵습니다. 그것을 디버그하기 위해서는 메모리를 많이 차지하지 않고 그냥 닫으십시오. 또한 명령 줄 매개 변수를 사용하지 않으면 명령 줄 매개 변수가 유효하지 않습니다 (호출 프로세스에서 생성 된 파이프이기 때문에 의미가 있습니다).
사실 (문제의 메모리 영역을 어떻게 찾았는지) 후에 프로세스에 windbg를 첨부 할 수 있지만 그 시점에서 할당 된 사람을 결정하는 것이 가능하지는 않습니다.
나는 단지 "Oh My God" GeorgeTakei>라고 말하고 싶습니다. –
StingyJack
NBC.com의 Heroes 페이지 외에도 새로운 태그를 사용한 첫 번째 관련 용도입니다. –
서버 2008, IIS7에서 동일한 동작이 나타납니다. –