본문 바로가기

Java/JVM

Stack - 메모리 관리

Stack 에는 힙 영역에 객체 타입의 데이터들에 대한 참조를 위한 값들이 할당된다.

또한 primitive 타입의 데이터들도 할당된다.

이 primitive 타입 데이터들에는 참조값이 아닌 실제 값을 저장한다.

 

 

Stack 메모리는 스레드 하나당 하나씩 할당이 되고

다른 스레드에선 접근할 수 없다.

 

이 Stack 이 어떻게 활용되는지 봐보자

 

argument 변수가 있다 

 

출처: https://yaboong.github.io/java/2018/05/26/java-memory-management/

argument 에 새로운 메소드를 호출해서

값을 return 받는다 생각해보자

 

함수 내부에서 param 변수에 argument 를 저장하고

이 변수에 4를 곱한 변수를 tmp에 저장한다.

 

그 후 2를 나눈 값을 return 하면 

저렇게 메소드에서 발생하는 부분이 새로 프레임으로 생성이되고

저 부분에서 이전 메소드의 매개변수은 argument 를 사용할수없다.

 

최종적으로 해당 메소드 프레임이 pop 되기 전에 

argument 에 return 값을 할당하고

메소드가 종료되면서 모든 데이터들은 pop 되버린다.

 

 

 

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

Garbage Collection  (0) 2021.02.04
JVM 과 JIT 컴파일러  (0) 2021.02.04
컴파일러  (0) 2021.02.04
JVM 이란?  (0) 2019.11.11