Получить информацию о системе на уровне ОС

Пакет java.lang.management дает вам намного больше memory информации, чем Runtime — например, он systems предоставляет вам память openjdk в куче (ManagementFactory.getMemoryMXBean().getHeapMemoryUsage()), отдельную от памяти core-java без кучи (ManagementFactory.getMemoryMXBean().getNonHeapMemoryUsage()).

Вы также можете memory получить загрузку процессора systems процессом (без написания java-api собственного кода JNI), но resource вам нужно преобразовать java.lang.management.OperatingSystemMXBean в j2se com.sun.management.OperatingSystemMXBean. Это работает в Windows core-java и Linux, я не проверял это oraclejdk в другом месте.

Например... чаще resource вызывайте метод getCpuUsage(), чтобы jre получать более точные показания.

public class PerformanceMonitor { 
    private int  availableProcessors = getOperatingSystemMXBean().getAvailableProcessors();
    private long lastSystemTime      = 0;
    private long lastProcessCpuTime  = 0;

    public synchronized double getCpuUsage()
    {
        if ( lastSystemTime == 0 )
        {
            baselineCounters();
            return;
        }

        long systemTime     = System.nanoTime();
        long processCpuTime = 0;

        if ( getOperatingSystemMXBean() instanceof OperatingSystemMXBean )
        {
            processCpuTime = ( (OperatingSystemMXBean) getOperatingSystemMXBean() ).getProcessCpuTime();
        }

        double cpuUsage = (double) ( processCpuTime - lastProcessCpuTime ) / ( systemTime - lastSystemTime );

        lastSystemTime     = systemTime;
        lastProcessCpuTime = processCpuTime;

        return cpuUsage / availableProcessors;
    }

    private void baselineCounters()
    {
        lastSystemTime = System.nanoTime();

        if ( getOperatingSystemMXBean() instanceof OperatingSystemMXBean )
        {
            lastProcessCpuTime = ( (OperatingSystemMXBean) getOperatingSystemMXBean() ).getProcessCpuTime();
        }
    }
}

java

memory

resources

system

2022-11-07T21:25:45+00:00