2016-08-16 39 views
0

Java Sigar API (http://support.hyperic.com/display/SIGAR/Home)를 다운로드했으며이를 사용하여 실행중인 다른 프로세스에 대한 메모리 사용 정보를 얻고 싶습니다. , Windows 리소스 모니터에서 찾고, 그러나Windows 자원 모니터와 일치하지 않는 Java Sigar보고 메모리 사용량

{PageFaults=3017940, Size=4125868032, Resident=608493568} 

를이 코드 출력을 실행

import org.hyperic.sigar.Sigar; 
import org.hyperic.sigar.SigarException; 
import org.hyperic.sigar.ptql.ProcessFinder; 

public class SigarTest { 
    public static void main(String[] args) throws SigarException { 
     Sigar sigar = new Sigar(); 
     ProcessFinder find = new ProcessFinder(sigar); 
     long pid = find.findSingleProcess("Exe.Name.ct=eclipse.exe"); 
     System.out.println(sigar.getProcMem(pid)); 
    } 
} 

:

나는 eclipse.exe라는의 메모리 사용량을보고 다음 테스트 케이스를 작성했습니다 eclipse.exe에 대한 다음 통계를 표시합니다 :

Commit (KB): 689,356 
Working Set (KB): 594,028 
Shareable (KB): 47,332 
Private (KB): 546,696 

다음 스크린 샷보기 : SIGAR에 의해보고

enter image description here

4.1GB의 메모리 사용량은 리소스 모니터에 의해보고 된 메모리 통계의 꿈에도 생각하지 않습니다.

왜 이렇게 멀리 떨어져 있습니까?

+0

질문에 대한 답변 왜 누군가가 투표를했는지 모르겠다. –

답변

0

나는 내 자신의 질문에 대한 답을 찾았다 고 생각합니다. Sigar가 가상 크기 (리소스 모니터에 포함되지 않은 통계)를보고하고 있습니다. 가상 크기와 커밋 크기의 차이에 대한 설명은 여기에서 확인할 수 있습니다. Windows - Commit Size vs Virtual Size