반응형
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를 붙여주면 된다.
728x90
반응형
'웹 개발' 카테고리의 다른 글
[web] 인코딩 ( 한글 깨짐 ) (0) | 2019.11.16 |
---|---|
Apache cxf를 이용한 SOAP XML 통신 Client (0) | 2019.11.15 |
java 동적으로 filed 값 가져오기 (0) | 2019.11.14 |
[spring boot] controller 등의 클래스명을 동일하게 사용하는 방법 (0) | 2019.09.23 |
[spring boot] war를 만들때 rootAbsolutePath가 null일 경우 (0) | 2019.09.23 |