java.lang
패키지에 속해있어 따로 import
하지 않아도 이용할 수 있는 클래스이다. 운영체제의 기능을 이용할 때 사용된다.
위와 같은 기능이 있다.
모든 필드와 메소드는 정적(static
) 필드와 정적 메소드로 구성되어 있다.
.exit()
는 현재 실행중인 프로세스를 강제 종료시킨다.
int
값을 받는다.
System.exit()
은 자동으로 SecurityManager.checkExit()
메소드를 호출시킨다. SecurityManager
의 checkExit()
메소드를 오버라이드하여 종료 코드에 따른 예외처리가 가능하다.
public class Main {
public static void main(String[] args) {
SecurityManager securityManager = new SecurityManager() {
@Override
public void checkExit(int status) {
System.out.println("status = " + status);
if(status == 0) {
System.out.println("정상적으로 종료되었습니다.");
} else {
System.out.println("비정상적으로 종료되었습니다.");
throw new SecurityException("예외처리를 해주세요.");
}
}
};
System.setSecurityManager(securityManager);
// usualExit();
unusualExit();
}
public static void usualExit() {
System.out.println("정상적으로 프로그램을 종료시킵니다.");
System.exit(0); // 0: 정상
}
public static void unusualExit() {
System.out.println("비정상적으로 프로그램을 종료시킵니다.");
System.exit(1); // 1: 비정상
}
}
일반적으로 가비지 콜렉터는 CPU가 한가하거나 메모리가 부족할 때 JVM에서 자동으로 실행한다.
System.gc()
를 실행하면 가비지 콜렉터 수행 시점을 조금 앞당길 수 있다.
.finalize()
메소드가 실행된다.