2017-09-25 2 views
0

JVM이 프로그램을 실행하면 (Hello World와 같은 가장 간단한 프로그램을 가정 해 봅시다) 애플리케이션 스레드가 시작됩니다. 그리고, 내 질문은 : 정확히 그 스레드에서 실행되는 무엇입니까? 우리 프로그램을 실행하는 바이트 코드 인터프리터입니까? 우리는 우리 프로그램이 JITed되지 않았다고 가정 할 수 있습니다.Application threads in JVM

+0

이미 답변하셨습니다. 진짜 질문이 있습니까? – Holger

답변

0

응용 프로그램 스레드가 시작됩니다.

JVM은 프로그램이며 시작될 때 아무 것도 실행하는 스레드가 하나 이상 있어야합니다. 따라서 JVM은 첫 번째 스레드를 시작할 필요가 없습니다.

해당 스레드에서 정확히 실행되는 것은 무엇입니까?

이것은 JVM에 따라 다릅니다. 예를 들어 https://www.excelsiorjet.com/은 프로그램을 시작하기 전에 코드를 사전 컴파일하므로 이미 원시 코드로되어 있습니다. 오라클 JVM은 코드가 충분히 실행되면 코드를 컴파일 만합니다. 안녕하세요.

우리는 우리의 프로그램이

당신은 그 코드가 있거나 JIT'ed되지 않으며 당신이 JITed있다해서 있다고 가정 할 수 있습니다 가정 할 수 JITed되지 않았 음을 가정 할 수있다 이제는 나중에 다시 컴파일되지 않을 것입니다. 즉 어떤 경우에는 인터프리터 모드로 돌아갈 수 있습니다.

+0

매개 변수 Xint with jvm을 사용하면 java가 jit이 아닌 interpreter로 실행되도록 할 수 있습니다. – dabaicai