java

JVM

Chris.Ko 2023. 1. 6. 01:06

JVM = Java Virtual Machine

  • 응용프로그램이 실행되면, 시스템(운영체제)으로부터 프로그램을 수행하는데 필요한 메모리를 할당받고 이 메모리를 용도에 따라 여러 영역으로 나누어 관리

1. 메소드 영역

JVM이 시작할 때 생성되고 모든 스레드가 공유하는 영역이다. 코드에서 사용되는 클래스들을 클래스 로더로 읽어 클래스별로 정적 필드와 상수, 메소드 코드, 생성자 코드 등을 분류해서 저장한다.

 

2. 힙 영역

객체와 배열이 생성되는 영역이다. 여기에 생성된 객체와 배열은 JVM 스택 영역의 변수나 다른 객체의 필드에서 참조한다.

만약, 참조하는 변수나 필드가 없다면 의미 없는 객체가 되기 때문에 JVM이 이것을 쓰레기로 취급하고 GC(Garbage Collector)를 실행시켜 자동으로 제거한다.

 

3. 스택 영역

메소드를 호출할 때 마다 프레임을 추가(push)하고 메소드가 종료되면 해당 프레임을 제거(pop)하는 동작을 수행한다.

기본 타입 변수는 스택영역에서 직접 값을 가지고 있지만, 참조 타입 변수는 스택 영역에 힙 영역의 객체 주소를 가진다.

 

Java의 타입으로는 기본 타입과 참조 타입이 있다.

  • 기본 타입 :
    1. 정수 타입 : byte, char, short, int, long
    2. 실수 타입 : float, double
    3. 논리 타입 : boolean
  • 참조 타입
    1. 배열 타입
    2. 열거 타입 (enum)
    3. 클래스
    4. 인터페이스