※ 본 글은 아래 도서를 공부한 후 정리한 내용입니다.
📚 스프링 입문을 위한 자바 객체지향의 원리와 이해
객체 지향 프로그램에서는 데이터 저장 영역 부분을 스태틱, 스택, 힙 3가지 영역으로 분할 하여 사용한다. 이 세가지 영역을 T메모리 구조라고 부르려고 한다.
스태틱(Static) 영역 - 클레스들의 놀이터
스택(Stack) 영역 - 메서드들의 놀이터
힙(Heap) 영역 - 객체들의 놀이터로 나타낸다.
1 public Class Study {
2 public static void main(String[] args){
3 System.out.println(“Let’s study hard”);
4 }
5 }
① JRE는 프로그램의 main() 메서드 존재 확인
② JRE가 JVM에 전원을 넣어 부팅
③ 부팅된 JVM은 목적파일을 받아 목적파일 실행
④ JVM은 java.lang 패키지를 static 영역에 가져다 놓음
⑤ 그 후, JVM은 개발자가 작성한 모든 클래스와 import 패키지를 static 영역에 가져다 놓음
⑥ 2번째 줄 실행 시 main() 메서드의 스택 프레임이 stack 영역에 할당
⑦ 메서드 인자 args의 저장할 변수공간을 스택 프레임 맨 밑에 할당
⑧ System.out.println(“Let’s study hard”);
실행
⑨ 닫는 중괄호를 만나면 스택 프레임 소멸
⑩ main() 메서드가 끝나면 JRE는 JVM을 종료하고 JRE도 운영체제 상의 메모리에서 사라짐
⑪ 메모리(스태틱 영역, 스택 영역, 힙 영역)도 사라짐
프로그램이 메모리 사용시 코드 실행 영역과 데이터 저장 영역으로 나누어 사용
자바에서는 데이터 저장 영역을 스태틱(Static), 스택(Stack), 힙(Heap)영역으로 분할 하여 사용
프로그램이 메모리 사용시 코드 실행 영역과 데이터 저장 영역으로 나누어 사용-> T메모리
스태틱(Static) 영역 - 클레스들의 놀이터
스택(Stack) 영역 - 메서드들의 놀이터
힙(Heap) 영역 - 객체들의 놀이터로 나타낸다.
모든 클래스와 import 패키지는 static 영역
스택 프레임(stack frame)은 여는 중괄호를 만날 때마다 하나씩 생성(클레스 정의 여는 중괄호 제외)
닫는 중괄호를 만나면 스택 프레임 소멸