본문 바로가기

Language/Java

[JAVA]Stack과 Heap에 관하여

Java는 JVM(Java Virtual Machine)을 통해 컴파일되고 실행되게 되는데 그 JVM의 구조중 Runtime Data Area가 있다.

 

Method Area Heap Area Stack Area PC
Register
Native
Method
Stack

 

Runtime Data Area는 위와같은 5개의 영역이 있는데 그중 Stack과 Heap에 대해 알아보았다.

 

1. Stack

 

Stack영역에는 Method가 호출될 때 그 Method에서 사용될 지역번수(Local Veriable)을 준비하고 또한 Method를 호출할때 전달하는 매개변수(Parameter)등이 저장되는 영역이다. Stack영역도 세세하게 나눌수는 있지만 그에 관한 내용은 한국데이터산업진흥원(www.kdata.or.kr/info/info_04_view.html?field=&keyword=&type=techreport&page=19&dbnum=183668&mode=detail&type=techreport)에서 확인할 수 있다.

Reference Type의 변수일 경우 변수가 참조하는 주소가 Stack에 저장된다.

 

2. Heap

 

Heap영역에는 Reference Type의 변수의 실질적인 메모리가 저장된다. 여기에 저장되는 변수들은 참조를 할 수 없거나 참조가 끊긴 경우 메모리를 관리하기 위해 Garbage Collector에 의해 제거된다.

 

간단하게 보면 위와 같은 식으로 정리할 수 있다. 추가적인 내용이나 수정할 부분이 생기면 수정하도록 하고 정리는 여기서 끝내도록 하겠다.

'Language > Java' 카테고리의 다른 글

[JAVA] Class에 대해  (0) 2021.02.03
[JAVA] Method호출 방식(Call by Reference, Name, Value)  (0) 2021.02.02
[JAVA]반, 학생 수 를 입력받는 성적 프로그램  (0) 2021.02.01
[JAVA] 별찍기  (0) 2021.01.30
[JAVA]연산자(Operator)  (0) 2021.01.28