자바의 철학
한번 작성하면 어디서나 실행된다
를 위해 java virtual machine 가 있다
자바 프로그램이 OS위에서 실행될 수 있도록 중간에서 메모리 관리와 실행 환경을 제공하는 가상머신!
자바와 os사이의 가상os로써, 자바프로그램이 실행될 수 있도록 한다
JVM의 주요 역할은
1. 메모리관리
- 자바 프로그램이 사용하는 하드웨어 메모리(힙, 스택, 메소드영역 등) 를 관리한다
- 자바 App이 실행될 때 필요한 메모리를 OS로부터 할당받아, 그 안에서 객체생성, 메서드실행, 변수저장 등 작업 수행
- Garbage Collection을 통해 불필요한 메모리를 자동으로 해제 해준다
2. 하드웨어 및 OS추상화
- 운영체제와 하드웨어의 차이를 추상화하여 자바 프로그램이 플랫폼 독립성을 갖도록 도와준다. 이때문에 자바 프로그램은 한번 작성하면 어떤 OS에서든 동일하게 실행할 수 있다
3. 바이트코드 실행
- 자바 소스코드는 (Bytecode)라는 중간 언어로 컴파일 된다. JVM은 이 바이트코드를 읽고 실행하는 역할을 한다. 이를 통해 자바 프로그램이 특정 OS나 하드웨어에 의존하지 않고 실행될 수 있게 한다. JIT컴파일러를 사용해 바이트코드를 실행할때 성능을 최적화 한다
4. 보안관리
다양한 메모리영역을 관리하며 가비지컬렉션으로 메모리관리도 자동으로 해준다
JVM이 관리하는 메모리 종류
- 힙(Heap) : 객체 생성되는 공간, 가비지컬렉션이 관리하는 영역
- 스택(Stack) : 각 스레드마다 독립적으로 할당, 메서드 호출시 로컬변수 등 저장됨
- 메소드영역(Method Area) : 클래스정보, 상수풀, 메서드코드 등 저장
- 네이티브메소드스택 : 자바말고 네이티브코드 실행할때 사용
멀티스레드를 지원한다 . 자바스레드
JVM이 운영체제에서 하나의 프로세스로 실행된다
JVM과 프로세스
- 프로세스는 운영체제가 할당한 독립적 실행단위로, cpu, 메모리, 파일 등의 자원을 사용할 수 있는 프로그램의 인스턴스
- JVM이 실행되면 운영체제 에서는 하나의 프로세스로 취급하며, 이 프로세스는 jvm 의 메모리공간에서 여러 자바스레드를 관리한다!
'기술면접준비' 카테고리의 다른 글
CORS 가 무엇인지, 문제 해결은 어떻게? (0) | 2024.10.12 |
---|---|
내가 이해한 배포개발환경 vs 로컬개발환경 (2) | 2024.10.11 |
github action을 이용한 CICD 파이프라인 자동화 (0) | 2024.10.10 |
Docker와 컨테이너, 오케스트레이션? (0) | 2024.10.10 |
JAVA 8 버전부터 추가된 Stream (0) | 2024.10.09 |