Java java.lang 패키지의 Runtime 클래스

Runtime 클래스는 실행 환경을 객체화하기 위해서 사용한다. Runtime 객체를 이용해 현 운영체제 시스템간의 상호 작용이 가능하다. JVM(자바 머신)이 작동하는 시스템과의 인터페이스를 제공하며 자바 클래스가 아닌 운영체제 기반의 프로그램을 실행시키거나 운영체제에 대한 정보를 제공한다.

Runtime 주요 메소드

메소드 설명
Process exec(String command) 명령(command)을 실행시키고, 실행시킨 프로세스의 래퍼런스를 반환한다.
static Runtime getRuntime() Runtime 객체의 레퍼런스를 반환한다.
void exit(int status) 상태 값(status) 반환하면서 JVM을 종료시킨다.
long freeMemory() JVM이 사용 가능한 메모리 양(bytes)을 반환한다.
long totalMemory() JVM이 사용하고 있는 전체 메모리를 반환한다.
long maxMemory() JVM이 사용할 수 있는 최대 메모리 양을 반환한다.

Runtime 예제

예제 1)

package com.devkuma.tutorial.java.lang;

public class RuntimeClass {

    public static void main(String[] args) {
        Runtime runtime = Runtime.getRuntime();

        long totalMemory = runtime.totalMemory();
        long freeMemory = runtime.freeMemory();
        long usedMemory = totalMemory - freeMemory;

        System.out.println("Total Memory : " + totalMemory);
        System.out.println("Free Memory : " + freeMemory);
        System.out.println("Used Memory : " + usedMemory);
    }
}

실행 결과는 아래와 같다.

Total Memory : 128974848
Free Memory : 126929960
Used Memory : 2044888

예제 2) 아래 예제에서는 해당 OS의 코드만 작성하도록 한다. 모두 실행시키면 에러가 발생한다.

package com.devkuma.tutorial.javalang;

import java.io.IOException;

public class RuntimeClass1 {

    public static void main(String[] args) {
        Runtime runtime = Runtime.getRuntime();

        // Mac인 경우 아래 명령어를 실행한다.
        try {
            runtime.exec("open /Applications/Contacts.app");
        } catch (IOException e) {
            System.err.println("Error executing Contacts.");
        }

        // linux인 경우 아래 명령어를 실행한다.
        try {
            runtime.exec("gedit");
        } catch (IOException e) {
            System.err.println("Error executing gedit.");
        }

        // windows인 경우 아래 명령어를 실행한다.
        try {
            runtime.exec("calc.exe");
        } catch (IOException e) {
            System.err.println("Error executing calc.");
        }
    }
}

실행을 하면 각 OS에 맞는 어플리케이션 프로그램이 실행이 될 것이다. 실행 결과는 생략한다.

참조

http://itmore.tistory.com/entry/Runtime-%ED%81%B4%EB%9E%98%EC%8A%A4




최종 수정 : 2021-08-27