반응형
[Java] Java Cpu 사용량, 메모리 사용량, 디스크 사용량 구하기
프로그래밍을 하면서 현재 운영체제의 CPU 사용량이나 메모리 사용량, 디스크 사용량 같은 것들을 모니터링 할 수 있진 않을까? 이러한 정보들이 필요할 때가 있습니다.
Java에서도 이러한 정보를 간단하게 확인할 수 있도록 라이브러리를 제공합니다.
관련된 API Document 문서는 아래 링크를 확인해주시길 바랍니다.
1. 디스크 용량
import java.io.File;
/**
* 디스크 용량
*/
@Override
public String[] getDiskSpace() {
File root = null;
try {
root = new File("/");
String[] list = new String[2];
list[0] = toMB(root.getTotalSpace());
list[1] = toMB(root.getUsableSpace());
return list;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public String toMB(long size) {
return String.valueOf((int) (size / (1024 * 1024)));
}
디스크 용량은 File IO를 사용해서 디스크 용량을 확인 할 수 있습니다.
2. CPU 사용량
import java.lang.management.ManagementFactory;
/**
* cpu 사용량
*/
@Override
public String[] getCPUProcess() {
OperatingSystemMXBean osbean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
String cpuUsage = String.format("%.2f", osbean.getSystemCpuLoad() * 100);
String[] list = new String[2];
list[0] = cpuUsage;
return list;
}
CPU 사용량은 OperatingSystemMXBean 객체를 이용해서 확인할 수 있습니다.
3. 메모리 사용량
import java.lang.management.MemoryMXBean;
/**
* 메모리 사용량
*/
@Override
public String[] getMemory() {
MemoryMXBean membean = (MemoryMXBean) ManagementFactory.getMemoryMXBean();
MemoryUsage heap = membean.getHeapMemoryUsage();
MemoryUsage nonheap = membean.getNonHeapMemoryUsage();
long heapInit = heap.getInit();
long heapUsed = heap.getUsed();
long heapCommit = heap.getCommitted();
long heapMax = heap.getMax();
long nonheapUsed = nonheap.getUsed();
String[] list = new String[5];
// list[0] = String.valueOf(heapInit);
list[0] = String.valueOf(heapUsed);
list[1] = String.valueOf(nonheapUsed);
// list[2] = String.valueOf(heapCommit);
// list[3] = String.valueOf(heapMax);
return list;
}
메모리 사용량은 heap메모리와 nonHeap메모리가 있습니다.
메모리 상태가 별도로 존재하는데,
Init = 초기 상태의 메모리, Used = 사용 중인 메모리, Commited = JVM에 할당된 메모리, Max = 총 메모리 양입니다.
heap메모리와 nonHeap메모리 별로 확인 할 수 있습니다.
4. 실행 결과
Java RCP Nebula와 Runnable Multi Thread, JMX를 이용해서 가상 환경인 리눅스 운영체제에서 Cpu 사용량과 메모리 사용량, 하드디스크 사용량을 주기적으로 받아와서 그래프화 시킨 결과입니다.
반응형
'Java > 순수 Java' 카테고리의 다른 글
[Java] Lombok 설치 방법 (0) | 2020.09.07 |
---|---|
[Java] 자바 코드 실행시간 측정 방법 (1) | 2020.05.27 |
[Java] n번째 소숫점 자리 출력 (0) | 2020.05.11 |
[Java] SWT Table Checkbox 상태 확인하는 방법 (0) | 2020.05.11 |
[Java] Eclipse 텍스트 더블 클릭시 하이라이트 유지하는 방법 (0) | 2020.04.07 |