2009년 08월 19일
Java EE 개발자는 항상 -server 옵션을 켜 두는 것이 좋다.
요즘 읽고 있는 자바 병렬 프로그래밍 책의 74쪽 주석에 나오는 글이다.
JVM에 -server 옵션을 지정하면 일반적인 상태(client 상태)보다 더 많은 최적화 방법을 동원하는데, 예를 들어 반복문 내부에서 전혀 값이 바꾸지 않는 내용을 반복문 밖으로 빼내는 등의 최적화 작업이 일어난다. 따라서 -server 옵션을 지정하지 않은 상태로 개발이나 테스트 과정을 진행하고 실 서버에 적용할 때에만 -server 옵션을 지정하면, 프로그램이 예상했던 대로 작동하지 않을 가능성이 있다.
여기 나온대로 개발자는 항상 운영 환경과 동일한 VM 설정을 해야한다.
같은 Java 코드라도 -server 냐 -client 냐에 따라 최적화 방식이 달라지고 코드가 다르게 작동한다.
이와 같은 현상에 대해 Effective Java 2nd ed. Item 66 에서도 다루고 있다. -client와 -server 옵션에 따라 코드의 해석이 달라지고 행동도 달라진다.
따라서 되도록 테스트 WAS를 띄울때 -server 옵션을 주고 띄워야 한다. (운영 서버는 항상 -server로 띄워야 실행시 최적화가 된다. -client는 실행시 최적화보다는 로딩 시간 최적화를 한 것이다.)
참고 : Java HotSpot FAQ : I would like java to default to -server. I have a lot of scripts which I cannot change (or do not want to change). Is there any way to do this?
기본적으로 항상 -server 모드로 뜨는 운영체제와 시스템들 for Java 5 : Linux 64bit의 경우 항상 -server 모드로 뜬다.

JVM에 -server 옵션을 지정하면 일반적인 상태(client 상태)보다 더 많은 최적화 방법을 동원하는데, 예를 들어 반복문 내부에서 전혀 값이 바꾸지 않는 내용을 반복문 밖으로 빼내는 등의 최적화 작업이 일어난다. 따라서 -server 옵션을 지정하지 않은 상태로 개발이나 테스트 과정을 진행하고 실 서버에 적용할 때에만 -server 옵션을 지정하면, 프로그램이 예상했던 대로 작동하지 않을 가능성이 있다.
여기 나온대로 개발자는 항상 운영 환경과 동일한 VM 설정을 해야한다.
같은 Java 코드라도 -server 냐 -client 냐에 따라 최적화 방식이 달라지고 코드가 다르게 작동한다.
이와 같은 현상에 대해 Effective Java 2nd ed. Item 66 에서도 다루고 있다. -client와 -server 옵션에 따라 코드의 해석이 달라지고 행동도 달라진다.
따라서 되도록 테스트 WAS를 띄울때 -server 옵션을 주고 띄워야 한다. (운영 서버는 항상 -server로 띄워야 실행시 최적화가 된다. -client는 실행시 최적화보다는 로딩 시간 최적화를 한 것이다.)
참고 : Java HotSpot FAQ : I would like java to default to -server. I have a lot of scripts which I cannot change (or do not want to change). Is there any way to do this?
기본적으로 항상 -server 모드로 뜨는 운영체제와 시스템들 for Java 5 : Linux 64bit의 경우 항상 -server 모드로 뜬다.
이 글과 관련있는 글을 자동검색한 결과입니다 [?]
- kwon37xi의 2008-05-05 북마크 by 권남
- kwon37xi의 2008-04-01 북마크 by 권남
- Effective Java 2nd Ed. by 최종욱
- Named Pipe 사용시 주의 사항(Security) by stein
- eclipse 설치 및 설정 by 오워리
# by | 2009/08/19 13:34 | 프로그래밍 | 트랙백 | 덧글(4)







☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
이클립스는, 이클립스를 -server로 띄우는 것이 아니라 이클립스 내부에서 실행되는 톰캣을 -server로 띄우는 것입니다. 톰캣을 실행하는 JVM옵션은 일단 톰캣을 한 번 띄운뒤에 이클립스의 Run 메뉴에서 해당 실행 설정을 찾아서 JVM Option에 -server를 붙여주시면 됩니다.