본문 바로가기
프로그래밍 공부/자바

메모리 사용 영역

by 준닝 2022. 4. 14.

JVM(Java Virtual Machine) 이 사용하는 메모리 영역에 대해 알아보자

 

java.exe로 JVM이 시작되면 JVM은 운영체제에서 할당받은 메모리 영역을 구분하여 사용한다.

 

1. 메소드 영역.

2. 힙 영역.

3. 스레드. ( 그 안에  ( JVM Stack ) 등)

 

1. 메소드 영역

 

메소드 영역에는 코드에서 사용되는 클래스들(~.class)들을 클래스 로더로 읽어

클래스별로 코드 ,데이터 상수풀 등을 분류하여 저장

 

 

2. 힙 영역

 

* 객체와 배열이 생성되는 영역.

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

 

* 참조하지 않는다면 의미 없는 개체가 되기 떄문에

  참조 하지 않는 것들을 쓰레기로 취급하고 쓰레기 객체를 힙 영역에서 자동으로 제거한다.

 

 

3. JVM 스택 영역

 

각 스레드마다 하나씩 존재하며 스레드가 시작될 때 할당한다.

JVM 스택은 메소드를 호출할 때마다 프레임을 추가하고 메소드 종료시 해당 프레임을 제거하는 동작을 함.

이 프레임 내부에는 로컬 변수 스택이 있는데 .  이안에 기본 타입 변수참조 타입 변수추가 되거나 제거된다.

변수가 이 영역에 생성되는 시점은 초기화가 될 때 ! 

변수는 선언된 블록 안에서만 스택에 존재하고 블록을 벗어나면 스택에서 제거된다 !

참조 타입 변수는 말 했듯이 값이 아니라 힙 영역이나 메소드 영역의 객체 주소를 가지는 것이다 .

 

ex) 

           stack 영역
scores 10번지

 

                      힙 영역 
(10번지)10     20       30

 

 

참고로 자바에서는 배열을 객체로 취급한다.

댓글