When

Linux환경 또는 커맨드라인 상에서 자바를 실행할 때 옵션

Why

class path 및 jvm 옵션 설정을 하기 위해

What

  • client : 클라이언트 VM을 사용한다. Swing과 같이 클라이언트 UI를 처리할 때 유용

  • server : 서버 VM을 사용함

  • cp 혹은 -classpath : 클래스 패스를 지정할 때 사용하며, 이 옵션의 공백 뒤에 경로를 연달아 지정하면 된다.

  • verbose : 클래스가 JVM에 로딩되는 정보를 출력

  • verbosegc : gc가 발생하는 정보를 출력

  • version : JVM의 버전을 출력하고 프로세스를 종료

  • showversion : JVM의 버전을 출력하고 자바 프로세스를 계속 수행

  • d32 : 가능한 경우 32비트 데이터 모델을 사용

  • d64 : 가능한 경우 64비트 데이터 모델을 사용

  • Xms : JVM의 시작 크기를 지정

  • Xmx : JVM의 최대 크기를 지정

  • Xss : 스레드의 스택 크기를 지정함. StackOverflowError가 발생할 때 이 옵션을 지정하여 스택의 크기를 증가시킬 수 있다.

  • deprecation : deprecated 된 클래스에 대한 상세한 정보를 포함하여 컴파일

  • g : 디버깅과 관련된 정보를 포함한 클래스 파일을 생성

  • Dname : 실행시 프로세스명 설정

  • nohup 명령어 : Linux, Unix에서 쉘스크립트파일(*.sh)을 데몬 형태로 실행


How

리모트 디버깅 사용

  1. 서버 커맨드 라인에서 아래 명령어 실행
java -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=y" HelloWorld
  1. 사용하는 에디터에서 원격 디버깅 실행
  • Eclipse : Run-> Debyg Configurations Remote Java Application -> 우클릭 -> add -> Host:서버주소, port:위에서 설정한 포트 -> Debug

입력 지연 방지 (프로세스를 데몬화하는 데 자주 사용)

  • </dev/null : 스크립트가 입력을 기다리지 않도록 하는데 사용.
nohup myscript.sh >myscript.log 2>&1 </dev/null &
# |               ^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^
# |                    |           |      |     run in background
# |                    |           |      |     
# |                    |           |   don't expect input
# |                    |           |   
# |                    |           redirect stderr to stdout
# |                    |           
# |                    redirect stdout to myscript.log
# |
# keep running the command no matter whether the connection is lost or you logout

프로세스 명으로 자바 실행

# 실행중인 모든 포트 확인
#  포트번호 검색:  | grep : 22
sudo netstat -tunlp

# 현재 실행중인 모든 자바 프로세스 출력 (-l: 전체 패키지이름 출력)
jps -v

# 프로세스 명으로 자바 실행
java -Dname=myApp -cp  myApp.jar some.client.main.MainFrame

전체 응용


nohup java -Dname=myServer -server -Xss4m -Xms512m -Xmx1024m -Xdebug 
-Xnoagent -Xrunjdwp:transport=dt_socket,address=8600,server=y,suspend=n 
-classpath .:classes:conf:lib/* me.chulgil.server.MyServerMain 
> out.log 2>&1 </dev/null &


Ref :