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() 메소드가 실행된다.