2011-02-03 5 views
21

-server 모드에서 실행되는 Java가 버전이 "혼합 모드"라고 말하는 이유는 무엇입니까? 내가 알기 론, JVM이 순수한 서버 모드로 진정으로로드되지 않았다는 것을 의미합니까?-server 모드에서 실행되는 Java가 버전이 "혼합 모드"라고 말하는 이유는 무엇입니까?

+2

또한 다음 내용을 읽어 보시기 바랍니다. http://stackoverflow.com/questions/198577/real-differences-between-java-server-and-java-client – biziclop

답변

27

서버 모드는 "혼합되지 않음"을 의미하지 않습니다. 그것들은 다른 설정입니다.

혼합은 JVM이 컴파일되고 해석 된 코드를 혼합 함을 의미합니다. 스위치 -Xint를 사용하여 완전히 해석 된 모드로 선택적으로 전환 할 수 있습니다 (일반적으로이 작업을 원하지는 않습니다).

서버 모드는 핫스팟 컴파일러가 서버 설정으로 실행됨을 의미합니다. 일반적으로 서버 모드의 VM은 오래 실행되므로이 ​​점을 염두에두고 최적화가 수행됩니다.

혼합 모드가 표시되면 VM이 서버 모드로 실행되고 있지 않다는 신호가 아닙니다.

편집 : 당신이 정말로 실행 내용을 확인하려면이 당신에게 힌트를 줄 것이다 적어도 일 VM 또는 오픈 JDK에 대한

System.out.println(System.getProperty("java.vm.name")); 
System.out.println(System.getProperty("java.vm.info")); 

의 출력을 시도합니다. 64 비트 시스템을 사용하는 경우에는 항상 서버 VM을 실행합니다.

+1

copmiled에 대해서만'-Xcomp'. 그리고 당신은 그렇게하고 싶지 않습니다./부수적으로, Server HotSpot은 자신 만의 인터프리터를 가지고 있습니다 (프로파일 링 정보를 필요로하므로 늪지 표준 해석보다 조금 느립니다). –

4

Hotspot Virtual Machine

모두 클라이언트와 서버 핫스팟 컴파일러는 자바 런타임 환경에 포함되어 있습니다.

기본적으로 클라이언트 컴파일러는 사용 가능하지만 강력한 서버 측 응용 프로그램의 경우 -server runtime 옵션을 사용하여 서버 컴파일러를 실행할 수 있습니다. 핫스팟 가상 시스템은 일반적으로 -version 출력에서 ​​볼 수 있듯이 혼합 모드로 실행됩니다. 혼합 모드는 메소드가 인터프리터를 통해 실행 된 횟수를 포함하여 많은 기준이 충족되면 핫스팟이 자바 바이트 코드를 원시 코드로 동적으로 컴파일 함을 의미합니다. 혼합 런타임 모드는 일반적으로 최상의 성능을 제공합니다.

+2

실제로 -server 옵션을 사용하면 혼합 모드가 비활성화됩니다. . 이 기사는 2000 년에 나온 것이므로 정확하지는 않습니다. – extraneon