HotSpotJVM??

ISAAC·2020년 12월 26일
0
post-thumbnail

※ 이 시리즈의 내용은 매우 기본적이거나 쉬울 수도 있기 때문에 놀라실 수도 있습니다. 개발자들의 주의를 요합니다.


HotSpot? 핫스팟?🤔

사실 HotSpot이라는 단어를 들었을 때 가장 먼저 떠오른 의미는

핫스팟 또는 핫스폿(영어: hotspot)은 스마트폰, 노트북을 포함한 이동 단말기로 라우터 등 무선 액세스 포인트가 설치된 지역에서 무선 네트워크(WLAN)에 접속하여 초고속 인터넷과 각종 콘텐츠를 이용할 수 있게 하는 서비스

그동안 인터넷 와이파이 관련된 핫스팟만 알았지..
JVM을 말하는 것인 줄은 이번에 알았다...


나란 🐕발자.. 참 대단합니다... 허허허


근데 막상 알아보니 HotSpot이라는 단어를 JVM에 사용한 이유가 생각보다 단순하다.

JDK1.3 전에 나왔던 가상 머신과 구분하기 위한 이름이라고 생각하면 된다.
참고로 자바를 만드는 오라클 사이트에서는 이전 버전의 JVM을 Classic VM이라고 표현하고 있다.

출처 : 『JAVA의 신』 - 이상민 저

JVM에 대한 설명은 이미 훌륭하게 정리된 글의 링크를 참조하도록 하자.

HotSpot JVM에서는 두 가지의 컴파일러가 제공된다.

  • 클라이언트 컴파일러
  • 서버 컴파일러

불과 몇년 전만 하더라도 많은 CPU코어를 사용할 수 없었고 대부분 코어의 개수가 하나였다. 이런 사용자의 상황을 위해 만들어진 것이 클라이언트 컴파일러였다.

클라이언트 컴파일러의 간단한 특징을 보자면,

  • 애플리케이션 시작 시간을 빠르게 하기 위해 만들었다.
  • 적은 메모리를 점유하도록 했다.
  • 애플리케이션 수행 속도에 중점을 뒀다.
  • 서버 컴파일러보다 먼저 컴파일을 시작한다.
  • 최적화를 위한 대기시간이 짧다.
  • Start-Up 시간이 빠르다. 하지만 최적화가 덜하기 때문에 코드실행은 서버가 더 빠르다.

서버 컴파일러의 특징은 아래와 같다.

  • 컴파일전에 많은 정보를 수집하여 최적화에 중점을 둔다
  • 서버 컴파일러는 절대로 모든 코드를 컴파일하지 않는다

그렇다면 클라이언트/서버 컴파일러의 구분 기준은 뭘까?

  • 2개 이상의 물리적 프로세서
  • 2GB 이상의 물리적 메모리

위의 조건에 만족하면 Oracle에서 만든 JVM은 서버 컴파일러를 선택한다.

명시적으로 컴파일러를 지정하려면 아래와 같이 java 명령과 클래스 이름 사이에 옵션을 추가하면 된다.

java -server 클래스명
java -client 클래스명

profile
어려운 것은 쉽게, 쉬운 것은 기억에 남게.

0개의 댓글