가상 크기가 약 2GB (32 비트 응용 프로그램, 큰 주소 인식 가능) 인 경우 Windows에서 C++을 사용하여 빌드 한 서버 응용 프로그램에서 메모리가 부족합니다. 그러나 Private Bytes는 상당히 작습니다. 현재 통계는 다음과 같습니다가상 크기로 인해 프로그램이 메모리를 소모합니다.
가상 크기 : 전용 바이트 2.6GB : 1.6GB
이 두 숫자의 차이가 1기가바이트입니다. 따라서 내 질문은 다음과 같습니다.
- 1GB 차이는 무엇을 나타 냅니까?
- 가상 크기 또는 비공개 바이트 때문에 응용 프로그램이 메모리가 부족합니까?
또한 VMMap 유틸리티를 통해 응용 프로그램을 실행했으며 "개인 데이터"는 일반적으로 커밋 된 크기보다 큰 순서입니다. 즉, 개인 데이터의 총 크기는 200MB 일 수 있지만 커미트 된 크기는 20MB에 불과합니다. 나는 개인 데이터가 무엇인지는 잘 모르지만, 지금까지의 연구를 토대로 볼 때 그것은 단지 힙의 일부라는 것을 나타내는 것으로 보인다.
편집 :
내가 퓨리를 사용하여 메모리 누수를 찾았다 적이 있지만 정말 유용한 아무것도 발견되지했습니다. 포인터가없는 메모리 형태의 메모리 누수는 문제가되지 않지만 메모리 누수가 너무 길면 메모리 누수가 문제가 될 수 있습니다. 아직 보지 못했습니다. 그러나 핵심은 왜 가상 크기가 메모리 부족 문제를 일으키는 지 이해하는 것입니다. 질문 1이 나를 이해하는 데 가장 중요합니다. 전용 바이트 대
아마도 수정해야 할 메모리 누수가 하나 이상 있습니까? –
Committed = 응용 프로그램에서 실제로 사용중인 메모리, private = 응용 프로그램 용으로 특별히 예약 된 메모리? 가상 크기 = 디스크에 페이징 된 데이터의 양입니다. 나는 확실히 그것에 대해 알아야 할 것입니다. – JAB
@JAB 잘못되었습니다. 나는 대답을 게시 할 것이다. – Polynomial