[java] 자바에서 유닉스/리눅스 시스템 호출을 사용하여 프로세스의 자원 사용량을 확인하는 방법에 대해 알려주세요.
public class ResourceUsage {
public static void main(String[] args) {
try {
// 유닉스/리눅스 시스템 호출을 사용하여 프로세스의 자원 사용량 확인
ProcessBuilder processBuilder = new ProcessBuilder("ps", "-p", String.valueOf(ProcessHandle.current().pid(), "-o", "%mem,%cpu"));
Process process = processBuilder.start();
process.waitFor();
// 프로세스 출력 읽기
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}
위의 코드는 ps
명령어를 사용하여 현재 프로세스의 메모리 사용량과 CPU 사용량을 확인합니다.
이 코드는 유닉스/리눅스에서 실행될 때에만 올바르게 동작하므로, 유닉스/리눅스 시스템에서 실행해보세요.
그런데, 자바에서 프로세스의 자원 사용량을 직접 확인하는 대신, Java Management Extensions (JMX) API를 사용하여 플랫폼 독립적으로 자원 사용량을 확인하는 것이 더 권장됩니다. JMX API는 JVM 자체의 모니터링과 관리를 위해 설계되었으며, java.lang.management
패키지와 com.sun.management
패키지를 사용하여 여러 가지 시스템 및 응용프로그램 관련 정보를 차례로 검색할 수 있습니다. 예를 들어, OperatingSystemMXBean
인터페이스를 사용하여 시스템의 CPU 사용량 및 메모리 사용량 등을 가져올 수 있습니다.
Java에서 시스템 자원 사용량을 가져오는 방법에 대한 자세한 내용은 다음 페이지를 참조하세요. Java 플랫폼의 모니터링 및 관리