카테고리 없음

[java] cpu, memory usage monitoring

광82 2023. 9. 26. 13:12
반응형

How do I monitor the computer's CPU, memory usage in Java?

 

java api를 확인해보면 아래 인터페이스를 확인할 수 있습니다.

https://docs.oracle.com/javase/7/docs/jre/api/management/extension/com/sun/management/OperatingSystemMXBean.html

 

OperatingSystemMXBean (Monitoring and Management Interface for the Java Platform )

getProcessCpuLoad double getProcessCpuLoad() Returns the "recent cpu usage" for the Java Virtual Machine process. This value is a double in the [0.0,1.0] interval. A value of 0.0 means that none of the CPUs were running threads from the JVM process during

docs.oracle.com

Interface OperatingSystemMXBean 를 활용하면 모니터링 프로그램을 쉽게 만들 수 있습니다.

 

[주요 메소드]

getSystemCpuLoad() : Returns the "recent cpu usage" for the whole system

getTotalPhysicalMemorySize() : Returns the total amount of physical memory in bytes

getFreePhysicalMemorySize() : Returns the amount of free physical memory in bytes.

 

아래 코드는 CPU사용률, 메모리 잔여량, 전체 물리메모리량을 확인할 수 있는 코드입니다.

#소스코드

package com.xmpo;

import com.sun.management.OperatingSystemMXBean;
import java.lang.management.ManagementFactory;

public class Monitoring {

    public static void main(String[] args)  {

        try{
            OperatingSystemMXBean osBean = ManagementFactory.getPlatformMXBean(OperatingSystemMXBean.class);

            for(int i=0;i<100;i++){
                System.out.println("***********************************************************");
                System.out.println("CPU Usage : " + String.format("%.2f", osBean.getSystemCpuLoad() * 100));
                System.out.println("Memory Free Space : " + String.format("%.2f", (double)osBean.getFreePhysicalMemorySize()/1024/1024/1024  ));
                System.out.println("Memory Total Space : " + String.format("%.2f", (double)osBean.getTotalPhysicalMemorySize()/1024/1024/1024  ));

                Thread.sleep(1000);
            }

        }catch (Exception e){
            System.out.println(e.toString());
        }
    }

}

 

#출력결과

 

저 PC 사양이 아래와 같은데요. 전체 메모리를 정확하게 출력해주고 있네요.

 

아래는 작업관리자에서 확인 할 수 있는 CPU사용률과 메모리 수치와 비교해보았습니다.

사용가능 메모리와 CPU사용률을 비교해보면 거의 동일한 것을 확인 할 수 있습니다.

 

반응형