Interpreter(인터프린터)
ByteCode를 기계가 이해할 수 있도록 Native Code로 바꾸는 작업을 한다
ByteCode 한 줄마다 컴파일을 하여 Native로 변환하는 작업을 하게 되는데 중복되는 Byte Code들에 대해서도 매번 컴파일을 하게 되면 비효율적이며 Running Time도 길어지게 된다
이러한 중복되는 Byte Code에 대해서는 JIT 컴파일러를 사용한다.
JIT(Just In Time) Compiler(JIT 컴파일러)
Interpreter 효율을 높히기 위해 Interpreter가 반복되는 코드를 발견하면 JIT 컴파일러로 반복되는 코드를 모두 Native Code로 바꾼다.
그렇게 되면 반복된 Byte Code는 Native Code로 바뀌어 있기 때문에 Interpreter가 바로 사용할 수 있게 된다.
Garbage Collector(가비지 컬렉션)
RuntimeDataArea의 Heap 영역의 더 이상 참조되지 않는 객체를 정리한다