본문 바로가기

기술면접준비

JVM

자바의 철학 

한번 작성하면 어디서나 실행된다

를 위해 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 의 메모리공간에서 여러 자바스레드를 관리한다!