java, 시작

sunj - Oct 30 - - Dev Community

실행 엔진(Execution Engine)

  • 실행 엔진(Execution Engine)은 메모리에 적재된 클래스(바이트 코드)들을 기계어로 변경하여 명령어(instruction) 단위로 실행
  • 바이트 코드를 운영체제에 맞게 해석해주는 역할을 수행

Image description

자바 컴파일러

  • javac를 통해서 컴파일 됨
  • java(.java)파일이 java bytecode(.class)로 변환

바이트 코드

  • 특정 하드웨어가 아닌 가상 컴퓨터에서 돌아가는 실행 프로그램을 위한 이진 표현법
  • 특정 하드웨어에 대한 의존성을 줄이고, 인터프리팅도 쉬운 결과물을 생성하고자 하는 프로그래밍 언어에 의해, 출력 코드의 한 형태로 사용

바이트 코드를 만드는 이유

  • 중간 단계를 하나 둬서 간접화를 통해 경우의 수를 낮추고 효율을 높이기 위해 중간 코드를 생성

바이트코드에서 기계어로 번역

  • 인터프리터를 사용하여 프로그램이 실행 중인 런타임 시 한 줄씩 읽기 때문에 런타임 전 소스코드를 미리 읽어서 기계어로 변환하는 방식의 컴파일러보다는 느림 이런 문제를 개선해 주는 것이 JIT 컴파일러

인터프리터
-프로그래밍 언어의 소스 코드를 바로 실행하는 컴퓨터 프로그램 또는 환경

JIT 컴파일러

  • Just In Time (제 때) 라는 뜻이며 이는 자바 메서드를 호출할때 의미

Image description

컴파일 임계치

  • method entry counter (JVM 내에 있는 메서드가 호출된 횟수)
  • back-edge loop counter (메서드가 루프를 빠져나오기까지 돈 횟수)
  • 카운터의 합계를 확인하고 메서드가 컴파일될 자격이 있는지 결정
  • 메서드가 컴파일 될 자격이 있다면 해당 메서드는 컴파일되기 위해 큐에서 대기

클라이언트 컴파일러(C1, 컴파일러 1)

  • 서버 컴파일러보다 먼저 컴파일을 시작한다.
  • 적극성이 높다고 볼 수 있다.
  • 최적화를 위한 대기시간이 짧다.
  • 코드 분석과 컴파일 시간이 서버 컴파일러보다 빠르다.
  • 메모리도 더 적게 사용할 수 있다.
  • 하지만 코드실행은 서버가 더 빠르다.

서버 컴파일러(C2, 컴파일러 2)

  • 서버 측 엔터프라이즈 Java 애플리케이션과 같은 장기 실행 애플리케이션의 경우 C1으로는 충분하지 않을 수 있다.
  • 대신 C2와 같은 서버 측 컴파일러를 사용할 수 있다.
  • 대부분의 서버 측 프로그램은 오랫동안 실행될 것으로 예상되므로
  • C2를 활성화하면 단기 실행되는 경량 클라이언트 응용 프로그램보다 더 많은 프로파일링 데이터를 수집 할 수 있다.
  • 따라서 더 고급 최적화 기술과 알고리즘을 적용 할 수 있다.
  • 컴파일 전에 많은 정보를 수집하여 최적화에 중점을 둔다.
  • 서버 컴파일러는 절대로 모든 코드를 컴파일하지 않는다.

Tiered Compiler ( C1 + C2 )

  • 클라이언트와 서버 두 컴파일러의 장점을 조합한 컴파일러이다.
  • 먼저 클라이언트 컴파일러로 스타트업 시간을 빠르게 하고, 많이 쓰이는 부분을 서버 컴파일러로 재컴파일하는 방식을 사용한다.
-server -xx:+TieredCompilation 옵션으로 사용가능
Enter fullscreen mode Exit fullscreen mode

Image description

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Terabox Video Player