☕️Java 옵션과 Java 컴파일 옵션

1 minute read

javac 옵션

  • -cp : 다른 포스트에서도 소개했듯이 클래스 패스를 설정하는 아주 필수적인 옵션이다
  • -d {디렉토리명} : 디렉토리에 존재하는 클래스들을 경로를 구분하여 컴파일한다.
  • -deprecation : deprecated된 클래스에 대한 정보를 포함하여 컴파일한다.
  • -g : 디버깅과 관련된 정보를 포함한 클래스 파일을 생성한다. 프로파일링 툴 등에서 활용될 수 있다.

java 옵션

표준옵션

  • -server, -client처럼 앞에 X가 없는 옵션들은 표준 옵션이다.

주요 옵션

  • -client : Client VM을 사용한다. Swing과 같이 UI를 처리할 때 유용하다.
  • -server : Server VM을 사용한다. 대부분의 시스템에는 이 옵션이 적용된다.
  • -cp {클래스패스} {클래스명} : 클래스패스 지정과 특정 클래스의 실행을 동시에 할 수 있다.
  • -verbose : 클래스가 JVM에 로딩되는 정보를 출력한다.
  • -verbosegc : gc가 발생하는 정보를 출력한다.
  • -version :
  • -d32, -d64 : 가능하다면 32 / 64 bit 데이터 모델을 사용한다.
  • -D{키값}={값} : System.getProperties()에서 제공되는 키값들에 대해 값을 설정할 수 있다.

비표준옵션

  • -Xms, -Xmx처럼 앞에 X가 붙은 옵션들은 비표준옵션이다. 이클립스 등에서 최소 힙크기 등을 설정할때 본적이 있을 것이다. (뭔지도 모르고 서치해서 썼었지만)
  • -XX:+-XX:-와 같은 옵션들도 존재한다. +, -에 따라 옵션을 켜고 끄는 형태이다.

주요 옵션

  • -Xms{크기} : JVM의 시작 크기를 지정한다. -Xms512m과 같은 형태로 사용한다.
  • -Xmx{크기} : JVM의 최대 크기를 지정한다.
  • -Xss{크기} : Thread의 Stack 크기를 지정한다. Stack Overflow가 발생한다면 해결을 위해 사용할 수도 있다.

[1] 이상민, 19장 “자바의 역사와 JVM”, 자바의神 2nd Edition