Language/Java
[JAVA]Stack과 Heap에 관하여
Ph_Js
2021. 1. 30. 16:50
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에 의해 제거된다.
간단하게 보면 위와 같은 식으로 정리할 수 있다. 추가적인 내용이나 수정할 부분이 생기면 수정하도록 하고 정리는 여기서 끝내도록 하겠다.