-server 모드에서 실행되는 Java가 버전이 "혼합 모드"라고 말하는 이유는 무엇입니까? 내가 알기 론, JVM이 순수한 서버 모드로 진정으로로드되지 않았다는 것을 의미합니까?-server 모드에서 실행되는 Java가 버전이 "혼합 모드"라고 말하는 이유는 무엇입니까?
답변
서버 모드는 "혼합되지 않음"을 의미하지 않습니다. 그것들은 다른 설정입니다.
혼합은 JVM이 컴파일되고 해석 된 코드를 혼합 함을 의미합니다. 스위치 -Xint를 사용하여 완전히 해석 된 모드로 선택적으로 전환 할 수 있습니다 (일반적으로이 작업을 원하지는 않습니다).
서버 모드는 핫스팟 컴파일러가 서버 설정으로 실행됨을 의미합니다. 일반적으로 서버 모드의 VM은 오래 실행되므로이 점을 염두에두고 최적화가 수행됩니다.
혼합 모드가 표시되면 VM이 서버 모드로 실행되고 있지 않다는 신호가 아닙니다.
편집 : 당신이 정말로 실행 내용을 확인하려면이 당신에게 힌트를 줄 것이다 적어도 일 VM 또는 오픈 JDK에 대한
System.out.println(System.getProperty("java.vm.name"));
System.out.println(System.getProperty("java.vm.info"));
의 출력을 시도합니다. 64 비트 시스템을 사용하는 경우에는 항상 서버 VM을 실행합니다.
copmiled에 대해서만'-Xcomp'. 그리고 당신은 그렇게하고 싶지 않습니다./부수적으로, Server HotSpot은 자신 만의 인터프리터를 가지고 있습니다 (프로파일 링 정보를 필요로하므로 늪지 표준 해석보다 조금 느립니다). –
모두 클라이언트와 서버 핫스팟 컴파일러는 자바 런타임 환경에 포함되어 있습니다.
기본적으로 클라이언트 컴파일러는 사용 가능하지만 강력한 서버 측 응용 프로그램의 경우 -server runtime 옵션을 사용하여 서버 컴파일러를 실행할 수 있습니다. 핫스팟 가상 시스템은 일반적으로 -version 출력에서 볼 수 있듯이 혼합 모드로 실행됩니다. 혼합 모드는 메소드가 인터프리터를 통해 실행 된 횟수를 포함하여 많은 기준이 충족되면 핫스팟이 자바 바이트 코드를 원시 코드로 동적으로 컴파일 함을 의미합니다. 혼합 런타임 모드는 일반적으로 최상의 성능을 제공합니다.
실제로 -server 옵션을 사용하면 혼합 모드가 비활성화됩니다. . 이 기사는 2000 년에 나온 것이므로 정확하지는 않습니다. – extraneon
또한 다음 내용을 읽어 보시기 바랍니다. http://stackoverflow.com/questions/198577/real-differences-between-java-server-and-java-client – biziclop