Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Spring SOLID
- stack메모리
- Class Loader
- Open Closed Principle
- 단일 책임 원칙
- 자료구조
- 의존성 역전 원칙
- solid
- 개방-폐쇄 원칙
- Execution Engine
- 개방폐쇄원칙
- Native Method Stack
- 실행 엔진
- pc register
- CS
- Runtime data Area
- 객체지향 설계 5원칙
- 스택
- 자바
- Data Structure
- 스택메모리
- Stack
- 객체지향
- 자바 heap
- Single Responsibillity Principle
- JVM
- 단일책임원칙
- Spring
- Heap
- Java
Archives
- Today
- Total
Juuunew 살아남기
[JAVA] 메모리 - Stack 본문
Stack 메모리
함수나 메서드의 지역 변수(local variable)와 매개 변수(parameter)가 저장된다.
함수나 메서드가 호출될 때마다 스택 프레임이 스택 메모리 안에 쌓인다.
- Heap 영역에 생성된 Object 타입 데이터의 참조값이 할당
- primitive type(원시타입)의 데이터가 값과 함께 할당
- boolean, char, short, int, long, float, double
- 하나의 Thread 당 하나의 Stack을 가짐 (각 Thread에서 다른 Thread의 Stack 영역에 접근 불가
🌟 스택 프레임
- 하나의 메서드를 호출하는데 필요한 메모리 덩어리
- 메서드 하나 당 하나의 스택 프레임이 존재
- 메서드를 호출하기 직전 스택 프레임을 자바 Stack 메모리에 생성한 후 메서드를 호출
- Stack 메모리는 메서드가 사용하는 전용 메모리이며, 메서드들은 각각의 메서드에서 사용하는 메모리를 스택 프레임 형태로 만듦
예제와 함께 스택 메모리와 스택 프레임의 생성 과정을 살펴보자.
- main 메서드가 실행되면서 스택 메모리에는 main 메서드의 스택 프레임이 생성된다.
- 매개변수인 args 에 대한 공간이 main 스택 프레임 내부에 생성된다.
- main 스택 프레임에 31이라는 값을 가진 공간을 생성 후 변수 a의 이름을 붙여준다.
- age 메서드의 스택 프레임 생성.
- 매개변수 n 의 공간 할당. (매개변수로 a를 전달했기에 a의 값인 31을 복사)
- 전달받은 a의 값에 10을 곱한 값을 변수 b에 저장. (40)
- b(40)을 main 메서드의 a에 리턴해주면서 age 메서드의 스택 프레임 삭제
- main 메서드의 변수 a의 값을 리턴 받은 b(40)로 변경
Stack 메모리에서는 함수 호출과 종료에 따라 자동적으로 메모리 관리가 이루어지므로 따로 관리해줄 필요는 없다.
하지만 함수나 메서드가 다른 무언가를 호출하고 또 그 안에서 호출하고 반복적으로 호출을 계속하면 스택 프레임이 계속 생성되어 어느 순간 스택 메모리에 남은 공간이 없어져 어플리케이션이 다운되어 버린다.
💡 공부 중 정리하는 내용이므로 부족한 부분이 있을 수 있습니다.
💡 참고자료
'Language > JAVA' 카테고리의 다른 글
[JAVA] JVM 03 - 실행 엔진 (Execution Engine) (0) | 2023.01.12 |
---|---|
[JAVA] JVM 02 - 클래스 로더 (Class Loader) (0) | 2023.01.11 |
[JAVA] JVM 01 - JVM이란? / JVM의 구조 (0) | 2023.01.10 |
[JAVA] 메모리 - Heap (0) | 2023.01.02 |
[JAVA] 데이터 타입 - 기본 타입(Primitive Type), 참조 타입(Reference Type) (0) | 2022.10.08 |