기은P
시간이 멈추는 장소
기은P
  • Programming (272)
    • 개발노트 (1)
    • FrontEnd (56)
      • ES&JS 문법 (14)
      • HTML&CSS (4)
      • React 기본 (18)
      • React 심화 (12)
      • React 이슈 (2)
      • Project 연습 (1)
      • Next.js (5)
    • Backend&Devops (33)
      • AWS (2)
      • Docker (9)
      • Jenkins (6)
      • Nginx (6)
      • Node.js (1)
      • ElasticSearch (5)
      • 프레임워크&아키텍처 (2)
      • 암호화 (0)
      • 기타 (2)
    • 알고리즘 (3)
    • C# (8)
      • WPF (8)
    • Java (51)
      • 순수 Java (18)
      • RDF&Jena (12)
      • RCP&GEF (9)
      • JMX (5)
      • JMapper (3)
      • 오류해결 (4)
    • Database (21)
      • RDBMS (9)
      • NoSQL (2)
      • TSDB (1)
      • GraphQL (1)
      • Hibernate (3)
      • 데이터베이스 이론 (4)
      • Redis (1)
    • 프로토콜 (11)
      • Netty (4)
      • gRPC (5)
      • 프로토콜 개념 (2)
    • Server (4)
      • Linux (4)
    • 2020 정보처리기사 필기 (43)
      • 목차 (1)
      • 기출문제 (1)
      • 1과목 - 소프트웨어 설계 (6)
      • 2과목 - 소프트웨어 개발 (7)
      • 3과목 - 데이터베이스 구축 (8)
      • 4과목 - 프로그래밍 언어 활용 (7)
      • 5과목 - 정보시스템 구축 관리 (10)
    • 2020 정보처리기사 실기 (31)
      • 목차 (4)
      • 기출예상문제 (19)
      • 실기요약 (8)
    • 빅데이터분석기사 필기 (4)
      • 목차 (0)
      • 필기 요약 (3)
    • 전기 공학 (1)
      • CIM (1)
    • 산업자동화시스템 (3)
      • SCADA (1)
      • OPC UA (2)
    • 디자인패턴 (1)
    • 휴지통 (0)

공지사항

  • 공지사항/포스팅 예정 항목

최근 댓글

최근 글

전체 방문자
오늘
어제

티스토리

hELLO · Designed By 정상우.
기은P

시간이 멈추는 장소

[Java] Java Cpu 사용량, 메모리 사용량, 디스크 사용량 구하기
Java/순수 Java

[Java] Java Cpu 사용량, 메모리 사용량, 디스크 사용량 구하기

2020. 5. 12. 11:50
반응형

[Java] Java Cpu 사용량, 메모리 사용량, 디스크 사용량 구하기

 

프로그래밍을 하면서 현재 운영체제의 CPU 사용량이나 메모리 사용량, 디스크 사용량 같은 것들을 모니터링 할 수 있진 않을까? 이러한 정보들이 필요할 때가 있습니다.

 

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

 

 

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
    'Java/순수 Java' 카테고리의 다른 글
    • [Java] Lombok 설치 방법
    • [Java] 자바 코드 실행시간 측정 방법
    • [Java] n번째 소숫점 자리 출력
    • [Java] SWT Table Checkbox 상태 확인하는 방법
    기은P
    기은P
    기은P의 블로그 일상과 개발 관련 포스팅 #React #Typescript #Next #Nest https://github.com/kimdongjang

    티스토리툴바