[Java] 자바 메모리 구조

정석·2024년 1월 9일

Java

목록 보기
26/39
post-thumbnail

김영한의 자바 강의로 학습한 내용을 정리하였다.

💡 자바의 메모리 구조

1. 메서드 영역

  • 클래스 정보와 메서드 코드에 대한 내용이 보관된다.

2. 스택 영역

  • 실제로 프로그램이 실행되는 곳. 메서드가 실행될 때 마다 하나씩 쌓인다.
    java의 프로그램 시작은 pulic static void main 으로 시작하기에 시작하자마자 쌓이게 되고, 메서드가 종료되면 해당 스택 프레임이 제거된다.

스택 영역은 쓰레드별로 하나씩 구역이 생성된다.
그렇기에 멀티 쓰레드의 경우 여러개가 동시에 생성되며 실행되는 것이다.

3. 힙 영역

  • 인스턴스와 배열이 생성되는 곳. 더 이상 참조되지 않게되면 Garbage Collection에 의해 제거된다.

💡 메서드의 실행 과정은 어떻게 될까?

메서드의 호출이 발생하면 해당 메서드가 존재하는 인스턴스(힙 영역)로 호출이 전달되며, 인스턴스가 메서드 영역에 있는 클래스 속 메서드 정보를 호출하여 실행되는 구조다.

위에서 본 자바의 메모리 구조와 같이 일단 메서드가 호출되면 스택에 쌓이게 되는데 스택은 후입선출(LIFO)이다. 그렇기에 가장 먼저 실행된 메서드는 제일 마지막에 종료된다.

0개의 댓글