[TIL] 다시 보는 main() 메서드: 메서드 스택 프레임

※ 본 글은 아래 도서를 공부한 후 정리한 내용입니다.

📚 스프링 입문을 위한 자바 객체지향의 원리와 이해


프로그램이 메모리를 사용하는 방식

객체 지향 프로그램의 메모리 사용 방식

객체 지향 프로그램에서는 데이터 저장 영역 부분을 스태틱, 스택, 힙 3가지 영역으로 분할 하여 사용한다. 이 세가지 영역을 T메모리 구조라고 부르려고 한다.

스태틱(Static) 영역 - 클레스들의 놀이터
스택(Stack) 영역 - 메서드들의 놀이터
힙(Heap) 영역 - 객체들의 놀이터로 나타낸다.


main() 메서드가 실행될 때, 메모리(스태틱 영역, 스택 영역, 힙 영역)의 변화


Study.java 파일

1 public Class Study {
2	public static void main(String[] args){
3		System.out.println(Let’s study hard”);
4	}
5 } 

위, Study.java 파일을 실행 시켰을 때 T메모리 변화

① JRE는 프로그램의 main() 메서드 존재 확인
② JRE가 JVM에 전원을 넣어 부팅
③ 부팅된 JVM은 목적파일을 받아 목적파일 실행
④ JVM은 java.lang 패키지를 static 영역에 가져다 놓음

  • java.lang 패키지( 모든 자바 프로그램이 반드시 포함하게 됨 )에 System.out.println()같은 메서드가 들어 있음.

⑤ 그 후, JVM은 개발자가 작성한 모든 클래스와 import 패키지를 static 영역에 가져다 놓음


⑥ 2번째 줄 실행 시 main() 메서드의 스택 프레임이 stack 영역에 할당

  • 스택 프레임(stack frame)은 여는 중괄호를 만날 때마다 하나씩 생성(클레스 정의 여는 중괄호 제외)

⑦ 메서드 인자 args의 저장할 변수공간을 스택 프레임 맨 밑에 할당


System.out.println(“Let’s study hard”); 실행
⑨ 닫는 중괄호를 만나면 스택 프레임 소멸

⑩ main() 메서드가 끝나면 JRE는 JVM을 종료하고 JRE도 운영체제 상의 메모리에서 사라짐
⑪ 메모리(스태틱 영역, 스택 영역, 힙 영역)도 사라짐



🌞 Check it!! 🌞

  • 프로그램이 메모리 사용시 코드 실행 영역과 데이터 저장 영역으로 나누어 사용

  • 자바에서는 데이터 저장 영역을 스태틱(Static), 스택(Stack), 힙(Heap)영역으로 분할 하여 사용

  • 프로그램이 메모리 사용시 코드 실행 영역과 데이터 저장 영역으로 나누어 사용-> T메모리

  • 스태틱(Static) 영역 - 클레스들의 놀이터

  • 스택(Stack) 영역 - 메서드들의 놀이터

  • 힙(Heap) 영역 - 객체들의 놀이터로 나타낸다.

  • 모든 클래스와 import 패키지는 static 영역

  • 스택 프레임(stack frame)은 여는 중괄호를 만날 때마다 하나씩 생성(클레스 정의 여는 중괄호 제외)

  • 닫는 중괄호를 만나면 스택 프레임 소멸

좋은 웹페이지 즐겨찾기