티스토리 뷰
들어가며
- 장비 하드웨어 상태를 모니터링하는 애플리케이션을 개발하다 보면 하드웨어 상태 정보를 알아내는 기능이 필요합니다.
- RAM, CPU, DISK, Network 등등
- Java를 통해 OSHI (Operating System & Hardware Information) 라이브러리를 사용하여 시스템의 RAM Memory 정보를 가져오는 방법을 알아보고자 합니다.
Java OSHI (Operating System & Hardware Information)
- OS와 HW 정보를 제공하는 JNA 기반의 Java 라이브러리 입니다.
- 별도의 설치 필요없으며 크로스 플랫폼에 대하여 여러 system 정보 (메모리, CPU, Disk 정보 등등) 를 제공하기 위해 개발된 라이브러리
라이브러리 적용
- 빌드 방법에 맞추어 라이브러리를 프로젝트에 적용하겠습니다.
Maven
<dependency>
<groupId>com.github.oshi</groupId>
<artifactId>oshi-core</artifactId>
<version>5.0.0</version>
</dependency>
Gradle
compile group: 'com.github.oshi', name: 'oshi-core', version: '5.0.0'
예제
- SystemUtil이라는 정적 Util 클래스를 만들어 메소드를 추가하는 방식으로 구현합니다.
장비의 총 메모리 가져오기
- 참고로 memory의 반환값 단위는 Byte이다.
public static long getTotalMemoryByte() {
SystemInfo si = new SystemInfo();
final HardwareAbstractionLayer hw = si.getHardware();
final GlobalMemory memory = hw.getMemory();
return memory.getTotal();
}
장비의 가용 메모리 가져오기
public static long getAvailableMemoryByte() {
SystemInfo si = new SystemInfo();
final HardwareAbstractionLayer hw = si.getHardware();
final GlobalMemory memory = hw.getMemory();
return memory.getAvailable();
}
장비 가용 메모리 사용량(%) 구하기
public static double getMemoryPercent() {
return (double) getAvailableMemoryByte() / getTotalMemoryByte() * 100;
}
테스트 코드
- 일반적인 테스트라기 보단 .. 출력 테스트라고 보면 좋을 것 같다.
@Test
public void testGetMemory() {
System.out.println("Total Memory(Byte): " + SystemUtil.getTotalMemoryByte());
System.out.println("Total Memory(KB): " + SystemUtil.getTotalMemoryByte() / 1024 );
System.out.println("Total Memory(MB): " + SystemUtil.getTotalMemoryByte() / 1024 / 1024 );
System.out.println("Total Memory(GB): " + SystemUtil.getTotalMemoryByte() / 1024 / 1024 / 1024 );
System.out.println("Available Memory(Byte): " + SystemUtil.getAvailableMemoryByte());
System.out.println("Available Memory(KB): " + SystemUtil.getAvailableMemoryByte() / 1024 );
System.out.println("Available Memory(MB): " + SystemUtil.getAvailableMemoryByte() / 1024 / 1024 );
System.out.println("Available Memory(GB): " + SystemUtil.getAvailableMemoryByte() / 1024 / 1024 / 1024 );
System.out.println("Percentage of Memory(%): " + SystemUtil.getMemoryPercent());
}
관련글
끝으로
이 글이 도움이 되었다면, 하단의 Google 광고 👎👎👎 한번씩 클릭 부탁 드립니다. 🙏🙏🙏
광고 클릭은 많은 힘이 됩니다!
반응형
'프로그래밍 > JAVA' 카테고리의 다른 글
[Java] List 일정 비율로 분할하는 방법 (0) | 2020.07.27 |
---|---|
(Java) Gmail SMTP 구현시 "AuthenticationFailedException: 535-5.7.8 Username and Password not accepted" 에러 해결법 (0) | 2020.05.26 |
(Java) 파일 FTP 프로토콜 전송 기능 구현방법 (FTP Client 구현) (0) | 2020.05.05 |
(Java) 파일명 String 에서 확장자 제거 및 추출 방법 (0) | 2020.05.04 |
(Java) BufferedImage 이미지 파일(PNG, JPEG, TIFF)로 출력하는 방법 (0) | 2020.05.01 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- JavaFX Window Close
- 자전거 여행
- 일본 자전거 여행
- 이펙티브자바
- TableView
- 텐트
- 인텔리제이
- git
- 배낭 여행
- 이펙티브 자바
- 스프링부트
- JavaFX Table View
- Java UI
- JavaFX
- 일본여행
- JavaFX 종료
- java
- intelij
- effective java
- 자전거
- 이펙티브
- 방통대 과제물
- 배낭여행
- JavaFX 테이블뷰
- windows
- 일본 여행
- 일본 배낭여행
- effectivejava
- springboot
- 자바
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함