프로세스 탐색기의 개인 바이트 VS 작업 세트 양이라는 것을 알고 있습니다. 그렇다면 시스템의 다른 프로세스에서

작업 세트는 프로세스가 사용하는 실제 메모리 양이며 개인 바이트는 더 많은 양을 필요로하는 경우를 제외하고 설정된 양이라는 것을 알고 있습니다.

그렇다면 시스템의 다른 프로세스에서 실제로 얼마나 많은 메모리가 제거되는지 파악하기 위해 두 가지를 추가할까요?



답변

나는 그렇게 간단하지 않다는 것을 두려워합니다. 특히 개인 바이트는 당신이 제기하는 질문에 대답하는 데별로 유용하지 않습니다.

가장 먼저 염두에 두어야 할 것은 메모리 페이지가 주 메모리 나 외부 저장소에있을 수 있다는 것입니다 (현재는 “디스크 페이징”또는 “스왑”). 두 번째는 프로세스에 풋 프린트에 개인 메모리 페이지가 있지만 다른 프로세스가 동시에 사용하는 공유 페이지의 오브젝트도 사용한다는 것입니다.

작업 세트 는 프로세스에 속하는 페이지의 크기이며 현재 주 메모리에 저장됩니다. 프로세스가 사용하는 메모리 페이지가 페이지 파일로 이동되면 작업 세트 메트릭에서 제거되고 기본 메모리로 다시 호출되면 다시 추가됩니다.

작업 세트는 프로세스가 소유 한 메모리를 독점적으로 언급하지 않습니다. 프로세스는 많은 공유 메모리 객체를 사용하며 이러한 객체의 크기는 통계에 반영됩니다. 불행히도 두 프로세스가 1MB 객체를 공유하면 두 프로세스 모두 작업 세트에 1MB 할당을 표시하므로 모든 작업 세트를 추가하면 1MB 객체가 두 번 기록되므로 모든 작업 세트 크기의 누적이 발생할 수 있습니다 극단적 인 경우 사용 가능한 램 크기를 초과하는 것으로 보입니다. 자세한 내용은 여기를 참조하십시오 : http://cybernetnews.com/cybernotes-windows-memory-usage-explained/

개인 바이트 는 프로세스의 개인 메모리 풋 프린트가 스왑하기 위해 완전히 페이징 된 경우 프로세스에 할당되는 페이지 파일 공간의 양을 의미합니다 (필수는 아님). 대부분의 경우 프로세스가 페이지 파일을 전부 (또는 전혀) 상주하는 것은 아니므로 개인 바이트에 추가 할당을위한 “룸”이있는 것 같습니다. 그러나 그렇지 않습니다.

그러나 개인 바이트는 프로세스 개인 메모리 만 참조하므로이 값은 공유 자원을 반영하지 않을 수 있습니다 (현재 공유 자원이이 프로세스에서만 사용되는 경우에도).

“Working set Private”(버전에 따라 프로세스 탐색기에서 “WS Private bytes”또는 “Private WS”)은 사용하기에 가장 적합한 메트릭 일 것입니다. 페이지 파일과 관련이 없으므로 실제 램에 미치는 프로세스 영향을 정확하게 표현할 수 있으며 공유 객체를 두 번 계산하지 않습니다. 공유 객체는 한 번만 키가 계산되지만 (단일 프로세스 관점에서만) 프로세스가 다른 프로세스에서 생성 된 공유 객체를 사용한다는 것을 기록하지 않으므로 프로세스가 다른 프로세스에서 더 많은 램을 사용할 수 있습니다 머신 또는 다른 프로세스 인스턴스를 사용하는 대신 공유 오브젝트 자체를 작성해야하는 상황. Windows 작업 관리자는 작업 집합 개인을 메모리 사용 메트릭으로 사용합니다.

그것이 도움이 되길 바란다