카테고리 없음

Java Cpu, Memory 사용량, 디스크 사용량 구하기

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

 정보들이 필요할 때가 있습니다.

 

Java에서도 이러한 정보를 간단하게 확인할 수 있도록 라이브러리를 제공합니다.

 

관련된 API Document 문서는 아래 링크를 확인해주시길 바랍니다.

 

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

 

 

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메모리 별로 확인 할 수 있습니다.

반응형