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
리모트 디버깅 사용
- 서버 커맨드 라인에서 아래 명령어 실행
java -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=y" HelloWorld
- 사용하는 에디터에서 원격 디버깅 실행
- 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 :
-
http://web.archive.org/web/20120914180018/http://www.steve.org.uk/Reference/Unix/faq_2.html#SEC16
-
https://stackoverflow.com/questions/1057247/how-can-i-set-the-process-name-for-a-java-program