Java Sigar сообщает об использовании памяти, которая не согласуется с Windows Resource Monitor

Я скачал API Java Sigar ( http://support.hyperic.com/display/SIGAR/Home) и хотел бы использовать его для получения информации об использовании памяти о различных запущенных процессах.

Я написал следующий контрольный пример, чтобы сообщить об использовании памяти eclipse.exe:

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));
    }
}

Выполнение этого кода выводит:

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

Однако, глядя на монитор ресурсов Windows, он показывает следующую статистику для eclipse.exe:

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

Смотрите следующий скриншот:

Использование памяти объемом 4,1 ГБ, сообщаемое Sigar, даже близко не соответствует статистике памяти, сообщаемой Resource Monitor.

Почему они так далеко?

1 ответ

Решение

Я считаю, что нашел ответ на свой вопрос. Sigar сообщает о виртуальном размере (статистика, которая не включена в Resource Monitor). Объяснение разницы между виртуальным размером и размером фиксации можно найти здесь: Windows - размер фиксации и виртуальный размер

Другие вопросы по тегам