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 |
참고로 자바에서는 배열을 객체로 취급한다.
'프로그래밍 공부 > 자바' 카테고리의 다른 글
상속 , 오버라이딩 (0) | 2022.12.11 |
---|---|
클래스멤버, 인스턴스멤버, 멤버변수 , 전역변수 , 지역변수 , 필드 (0) | 2022.12.11 |
클래스 ,객체, 인스턴스 (0) | 2022.12.10 |
논리연산자 , 비교연산자 , boolean, 조건문 (0) | 2022.12.09 |
데이터 타입 분류 (0) | 2022.04.14 |
댓글