[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 플랫폼의 모니터링 및 관리