728x90
반응형
컴파일
컴파일러는 맨 처음 문법에 맞게 프로그램을 작성했는지, 적합한 타입을 사용했는지 등의 규칙을 확인한다. 컴파일 결과로 .class 확장자를 가진 파일인 바이트코드가 생성되는데, 실행파일과 유사한 바이너리 형식이며 JVM용이다.
클래스 로딩
클래스 정의의 바이트코드를 실행 중인 JVM의 메모리로 가져오는걸 클래스 로딩이라고 한다.
JVM은 .class 바이너리 파일을 가져와서 메모리에 저장할 수 있는 클래스 로더가 있다.
검증
일단 클래스가 로드되면 JVM은 바이트코드가 유효한지 검증한다. 바이트코드 검증을 포함한 일부 검증들은 자신의 클래스 바이트가 있는 메모리 외부로 메모리 위치를 확장하지 않는지 확인하고, 코드 상의 명령어가 완벽한지 확인한다.
해석
코드가 검증되면 JVM은 코드가 실행되는 아키텍쳐와 운영체제에 맞는 명령어로 바이트코드를 해석할 수 있다.
728x90
반응형
'그 외 ... (정리해야함) > 질문과 답변' 카테고리의 다른 글
Atomic 클래스는 무엇을 제공하는가? (0) | 2019.05.07 |
---|---|
[동시성] 스레드 사이의 공유 상태는 어떻게 관리하는가? (0) | 2019.05.07 |
JVM의 힙 크기는 어떻게 지정할 수 있는가? (0) | 2019.05.07 |
JVM 메모리는 어떻게 할당되는가? (0) | 2019.05.05 |
Hashtable과 HashMap의 차이점은 무엇인가? (0) | 2019.05.02 |