JVM 클라이언트 모드와 서버 모드의 차이점
JVM 서버 모드와 클라이언트 모드의 주요 차이점은 시작할 때 : - 시작시 서버 모드가 느리지 만 시작하면 성능이 크게 향상됩니다.
JVM은 서버 모드에서 작업 할 때 성능을 크게 향상시킬 수 있습니다. 서버 모드에서 애플리케이션의 시작 속도는 클라이언트 모드보다 약 10% 느리지 만 달리기 속도는 클라이언트 VM보다 10 배 이상 빠릅니다.
실행 모드 매개 변수가 지정되지 않으면 가상 머신은 호스트가 서버인지 여부를 감지하기 시작합니다. 그렇다면 서버 모드에서 시작됩니다. 그렇지 않으면 클라이언트 모드에서 시작됩니다. J2Se5.0 검출의 기초는 최소 2 개의 CPU 및 최소 2GB의 메모리입니다.
서버의 CPU, 메모리 및 하드 디스크가 클라이언트 시스템보다 강하기 때문에 프로그램이 배포 된 후에는 더 나은 성능을 얻기 위해 서버 모드에서 시작해야합니다.
-XM에 대한 JVM 기본값은 1m이고 -xmx는 클라이언트 모드에서 64m입니다. -XM에 대한 JVM 기본값은 128m이고 -xmx는 서버 모드에서 1024m입니다.
서버 : 느린 시작 및보다 완전한 컴파일. 컴파일러는 고효율이 높은 적응 형 컴파일러이며 서버 측 응용 프로그램을 최적화하고 서버 환경에서 프로그램 실행 속도를 최대화하도록 설계되었습니다.
클라이언트 : 빠른 시작, 낮은 메모리 사용, 빠른 컴파일, 데스크탑 응용 프로그램에 최적화되어 클라이언트 환경에서 시작 시간을 줄이기 위해 최적화되었습니다.
JVM이 GUI 인터페이스의 대화식 응용 프로그램을 시작하는 데 사용되면 JVM이 서버 배경 프로그램을 실행하는 데 사용될 때 클라이언트 모드를 사용하는 것이 좋습니다.
Java -Version을 실행하여 JVM이 작동하는 모드를 확인할 수 있습니다.
그림 1의 GCC에 대해
클라이언트 모드에서 새로운 세대는 직렬 GC를 선택하고 구식은 직렬 GC를 선택하고 구식은 연속 GC를 선택합니다.
서버 모드에서 새로운 세대는 GC의 병렬 재활용을 선택하고 구식은 병렬 GC를 선택합니다.
일반적으로 시스템 애플리케이션을 선택하는 두 가지 방법은 처리량 우선 순위와 시간 우선 순위를 일시 중지합니다. 처리량 우선 순위의 경우 서버의 기본 병렬 GC 메소드가 채택되고 일시 중지 시간 우선 순위의 경우 동시 GC (CMS) 메소드가 채택됩니다.
다른 확장 된 지식 지점
JDK에는 두 가지 유형의 VM, VM 클라이언트 및 VM 서버 응용 프로그램이 있습니다. 두 솔루션은 Java 런타임 환경의 핫스팟 코드 기반을 공유하지만 인라인 정책 작성 및 힙의 기본값을 포함한 차이점이있는 다른 컴파일러, 클라이언트 및 서버의 고유 한 성능 기능을 사용합니다.
서버는 클라이언트 가상 시스템과 유사하지만 서버 VM은 최대 피크 작동 속도를 특별히 조정했습니다. 그 목적은 장기 실행되는 서버 응용 프로그램을 실행하는 것이며, 이는 빠른 시작 시간을 초과하는 가장 빠른 실행 속도 또는 더 작은 런타임 메모리 풋 프린트가 필요합니다.
클라이언트 VM 컴파일러는 전형적인 가상 머신이며 이전 버전의 JDK를 통해 실시간 업그레이드 (JIT)가 사용하는 컴파일러입니다. 클라이언트 가상 머신은 응용 프로그램 및 애플릿 실행을위한 성능 향상을 제공합니다. Java Virtual Machines 고객의 핫스팟 고객은 고객 환경에 특히 적합하도록 애플리케이션의 시작 시간과 메모리 사용을 줄였습니다. 일반적으로 클라이언트 시스템에는 더 나은 그래픽 사용자 인터페이스가 있습니다.
따라서 실제 차이는 컴파일러 수준에 있습니다.
클라이언트 가상 머신 컴파일러는 서버 가상 머신에서 컴파일러에서 수행하는보다 복잡한 최적화를 수행하려고 시도하지 않지만 스왑 중에 코드를 분석하고 컴파일하는 데 시간이 거의 걸리지 않습니다. 이는 클라이언트 가상 머신이 더 빨리 시작할 수 있으며 더 작은 메모리 풋 프린트가 필요하다는 것을 의미합니다.
Server Virtual Machine에는 최적화를위한 많은 C ++ 컴파일러 최적화, 동일한 유형 및 활성으로 인한 가상 메소드 호출과 같은 기존 컴파일러로 수행 할 수없는 일부 최적화를 지원하는 고급 적응 형 컴파일러가 포함되어 있습니다. 이것은 경쟁력 있고 성능 이점, 정적 컴파일러입니다. 적응 최적화 기술은 접근 방식에서 매우 유연하며 일반적으로 고급 정적 분석 및 컴파일 기술보다 우수합니다.
-server 모드를 시작하면 속도가 느리지 만 실행되면 성능이 크게 향상됩니다. 그 이유는 가상 머신이 -Client 모드에있을 때 경량 컴파일러 코드 명 C1을 사용하는 반면, 가상 머신은 -server 모드에서 시작된 가상 머신은 비교적 헤비급 컴파일러 코드 이름 C2를 사용하기 때문입니다. C2는 C1 컴파일러보다 비교적 철저히 컴파일되며 서빙 후 성능이 높아집니다.
일반적으로 Java_home/JRE/BIN 디렉토리가 각각의 JVM에 해당하는 동시에 존재하는 한 알려진 두 구성의 순서 만 변경하십시오.
너무 많이 말한 후, 나는 실제로 한 문장으로 요약했습니다.
응용 프로그램은 느리게 시작하지만 JVM 서버 모드에서는 더 빨리 실행되지만 응용 프로그램은 빠르게 시작하지만 JVM 클라이언트 모드에서 더 빠르게 실행됩니다.
권장 : 서버에서 서버 모드에서 실행하고 클라이언트 모드 또는 GUI 모드에서 클라이언트 모드에서 실행하십시오.