JVM의 메모리 구조
java로 작성된 프로그램이 실행되면 JVM은 OS로부터 memory 공간을 할당받고, 이 할당받은 공간을 용도에 따라서 여러 영역으로 나눠서 관리하게 된다. 여기서 주목해서 공부해봐야할 부분은 3가지 영역인데 그 세 가지 영역은 아래와 같다.
1. method area
2. heap
3. call stack or execution stack
method area
프로그램 실행 중 사용되는 class에 대한 정보를 저장하는 위치
프로그램 실행 중 특정 class가 사용되면 JVM은 해당 class의 ".class" file을 분석하여 class에 대한 정보를 해당 영역에 저장한다. 그리고 이 때 해당 class의 class variable도 이 위치에 저장된다.
heap
프로그램 실행 중 생성되는 instance들을 저장하는 공간
프로그램이 실행되는 동안 생성되는 모든 instance 들은 모두 해당 공간에 저장된다. 즉, instance variable도 해당 영역에 저장된다.
call stack (execution stack)
프로그램이 실행되는 중 호출되는 method들이 동작하기 위한 메모리 공간을 제공하는 공간
프로그램 실행 중 method가 호출되면 해당 영역에 호출된 method가 동작하기 위한 메모리 공간이 할당된다. 그리고 이렇게 할당된 메모리 공간은 method가 동작하는 동안 사용하는 local variable, parameter, 연산의 중간결과 등을 저장하는 데 사용된다. 호출된 method가 종료된 경우, call stack에 할당된 메모리 공간은 다시 반환된다.
여기서 각 method에 할당되는 메모리 공간은 서로 구분되며, stack이라는 표현에서 이해할 수 있듯이, 만약 특정 method가 호출되고, 그 method의 내에서 또 다른 method를 호출하는 경우 우선 첫번째로 호출된 method를 위한 메모리 공간이 call stack의 가장 밑에 할당되고 바로 그 위에 두번째로 호출된 method를 위한 메모리 공간이 할당되는 방식으로 동작한다.
단, 여기서 첫번째 method의 내부에서 두번째 method가 호출된 경우, 첫번째 method는 실행을 멈추고 두번째 method가 실행되며 두번째 method가 실행을 마치고 call stack 영역으로 부터 할당받은 메모리 공간을 반환하면 이어서 다시 첫번째 method가 동작하게 된다. 즉, call stack 영역에서 가장 상위에 위치하는 method가 현재 실행 중인 method 임을 의미한다.
'Web Backend > Java' 카테고리의 다른 글
콘솔 상에서 비밀번호 처리하기 (0) | 2021.08.29 |
---|---|
gson 라이브러리를 사용한 파일 입출력 기능 구현하기 (0) | 2021.07.19 |
Variable 과 Method (0) | 2021.06.29 |
Class와 Object (0) | 2021.06.29 |
OOP(Object Oriented Programming language) 개념 (0) | 2021.06.29 |
댓글
이 글 공유하기
다른 글
-
콘솔 상에서 비밀번호 처리하기
콘솔 상에서 비밀번호 처리하기
2021.08.29 -
gson 라이브러리를 사용한 파일 입출력 기능 구현하기
gson 라이브러리를 사용한 파일 입출력 기능 구현하기
2021.07.19 -
Variable 과 Method
Variable 과 Method
2021.06.29 -
Class와 Object
Class와 Object
2021.06.29