웹 개발

Java EE 개발자는 항상 -server 옵션을 켜 두는 것이 좋다.

노루아부지 2019. 11. 15. 19:23
반응형

JVM에 -server 옵션을 지정하면 일반적인 상태(client 상태) 보다 더 많은 최적화 방법을 동원하는데, 예를 들어 반복문 내부에서 전혀 값이 바꾸지 않는 내용을 반복문 밖으로 빼내는 등의 최적화 작업이 일어난다. 따라서 -server 옵션을 지정하지 않은 상태로 개발이나 테스트 과정을 진행하고 실 서버에 적용할 때에만 -server 옵션을 지정하면, 프로그램이 예상했던 대로 작동하지 않을 가능성이 있다.

 

여기 나온대로 개발자는 항상 운영 환경과 동일한 VM 설정을 해야 한다.

같은 Java 코드라도 -server 냐 -client 냐에 따라 최적화 방식이 달라지고 코드가 다르게 작동한다.

 

이와 같은 현상에 대해 Effective Java 2nd ed. Item 66에서도 다루고 있다. -client와 -server 옵션에 따라 코드의 해석이 달라지고 행동도 달라진다.

 

따라서 되도록 테스트 WAS를 띄울 때 -server 옵션을 주고 띄워야 한다. (운영 서버는 항상 -server로 띄워야 실행 시 최적화가 된다. -client는 실행시 최적화보다는 로딩 시간 최적화를 한 것이다.)

 

이클립스에서 톰캣을 실행하는 JVM옵션은 일단 톰캣을 한 번 띄운 뒤에 이클립스의 Run 메뉴에서 해당 실행 설정을 찾아서 JVM Option에 -server를 붙여주면 된다.

 

참고 : http://egloos.zum.com/kwon37xi/v/4214739

728x90
반응형
loading