반응형
자바 가상 머신 (JVM)
자바 가상 머신은 자바 애플리케이션을 클래스 로더를 통해 읽어들여 자바 API와 함께 실행해줍니다. 또한 자바와 OS 사이에서 자바가 OS에 관계없이 실행될 수 있도록 하는 역할을 해줍니다.
이 덕분에 윈도우에서 구현한 자바 프로그램이 mac에서도 동작하게 될 수 있는 겁니다.
JVM의 역할
자바 애플리케이션을 클래스 로더를 통해 읽어 자바 API와 함께 실행해 주는 역할을 합니다.
자바와 OS 사이에서 OS에 독립적으로 자바 프로그램이 실행 될 수 있도록 해줍니다.
또한 가비지 컬렉션 같은 기능을 통해서 프로그램의 메모리 관리를 알아서 해주기도 합니다.
사실 저는 이걸 보고도 음.. 그래서 뭘 어떻게 해서 OS에 관계없이 자바 프로그램이 실행되게 해주는거지? 하는 의문이 계속 남더라구요..
그래서 자바의 실행 과정을 알아보았습니다!!
자바 프로그램의 실행 과정
- 자바 프로그램이 실행되면 JVM은 OS로부터 프로그램이 필요로 하는 메모리를 할당 받고 이 메모리를 용도에 맞게 여러 영역으로 나눠 관리합니다.
- 자바 컴파일러 (javac)가 자바 소스코드 (.java)를 읽어 자바 바이트코드(.class)로 변환시킵니다. (바이트 코드: JVM이 이해할 수 있는 언어로 변환된 코드 - Opcode와 피연산자로 이루어짐.)
- JVM의 클래스 로더를 통해 class 파일들을 JVM의 메모리에 로드합니다.
- 데이터 영역에 로딩된 class 파일들은 JVM의 Execution engine을 통해 실행됩니다.
- 해석된 class 파일은 JVM의 Runtime Data Areas에 배치되고 수행됩니다. 이과정에서 JVM은 가비지 컬렉션 같은 기능으로 메모리를 관리해줍니다.
이러한 과정을 통해서 JVM이 자바의 바이트코드를 OS에 맞게 수행될 수 있도록 해석해주므로 자바가 OS에 독립적일 수 있게 되는 것입니다.
728x90
반응형
'Java > Java 기타' 카테고리의 다른 글
[Java] 가비지 컬렉션의 여러가지 동작 알고리즘 (0) | 2021.11.16 |
---|---|
[Java] 메모리 구조와 가비지 컬렉션 (0) | 2021.11.10 |
[Java] 맥에서 이클립스의 자동완성 기능 사용하기 (0) | 2021.07.20 |