DEV&OPS/Java
System 클래스
ALEPH.GEM
2022. 4. 7. 16:02
자바 프로그램은 운영체제가 아니라 JVM에서 실행됩니다.
그래서 System 클래스를 통해 운영체제의 일부 기능을 제공하고 있습니다.
exit()
프로세스를 강제 종료한는 메소드 입니다.
public class ExitEx {
public static void main(String[] args) {
for(int i = 0; i<10; i++) {
System.out.println(i);
if(i == 5) {
System.exit(i);
}
}
}
}
gc()
가비지 컬렉트 요청을 합니다.
메모리가 부족하거나 CPU에 여유가 있을 때 실행되기 때문에 정확한 실행 타이밍을 알 수 없습니다.
public class GCExample {
public static void main(String[] args) {
Employee emp = new Employee(1);
emp = null; //쓰레기가 됨
emp = new Employee(2);
emp = new Employee(3);
System.out.println(emp.eno);
System.gc(); //가비지 콜렉트 요청
}
}
class Employee {
public int eno;
public Employee(int eno) {
this.eno = eno;
System.out.println("Employee "+eno+" 생성");
}
public void finalize() {
System.out.println("Employee "+eno+" 제거");
}
}
시스템 시간
public class SystemTime {
public static void main(String[] args) {
long stime1 = System.currentTimeMillis();
long stime2 = System.nanoTime();
int sum = 0;
for(int i = 1; i <= 10000; i++) {
sum += i;
}
long etime1 = System.currentTimeMillis();
long etime2 = System.nanoTime();
System.out.println((etime1 - stime1) +"밀리초" );
System.out.println(sum);
System.out.println((etime2 - stime2) + "나노초" );
}
}
시스템 프로퍼티
java.version : 자바 버전
java.home : JRE 경로
os.name : 운영체제 이름
file.separator : 파일 시스템 경로 구분 문자(윈도우:\, 리눅스:/)
user.name : 사용자 계정
user.home : 홈 디렉토리
user.dir : 현재 작업중인 디렉토리
import java.util.Properties;
import java.util.Set;
public class GetProperty {
public static void main(String[] args) {
System.out.println(System.getProperty("os.name"));
Properties props = System.getProperties();
Set keys = props.keySet();
for(Object objkey : keys) {
String key = (String)objkey;
String value = System.getProperty(key);
System.out.println("["+key+"]" + value);
}
}
}
환경 변수
운영체제는 환경 변수를 등록하고 관리하는데 Path나 JAVA_HOME 같은 것들을 말합니다.
public class SystemEnv {
public static void main(String[] args) {
System.out.println(System.getenv("path"));
}
}
728x90