[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)은 여는 중괄호를 만날 때마다 하나씩 생성(클레스 정의 여는 중괄호 제외)
-
닫는 중괄호를 만나면 스택 프레임 소멸
Author And Source
이 문제에 관하여([TIL] 다시 보는 main() 메서드: 메서드 스택 프레임), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@gaya309/TIL-다시-보는-main-메서드-메서드-스택-프레임저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)