프로그램의 메모리 영역
2022. 3. 27. 16:20ㆍ- 안드로이드
프로그램이 사용 하는 메모리 영역에는 다음과 같이 4 영역이 있습니다.
코드 영역 (Code) |
데이터 영역 (Data) |
힙 (Heap) ↓ |
스택 (Stack) ↑ |
- 코드 영역 (Code)
- 명령어가 들어가는 영역. - 데이터 영역 (Data)
- 프로그램이 컴파일되면 정적 변수나 문자열 등이 들어가는 정적 메모리 영역.
- 정해져 있어서 실행 중에 오류가 발생할 가능성이 적음.
- JVM에서는 이 영역을 메서드 정적 영역(Method Static Area)으로도 부름. - 힙 (Heap)
- 실행 중 생성되는 객체가 만들어지는 동적 메모리 영역. - 스택 (Stack)
- 코드 블록인 중괄호 {} 안에 사용한 지역변수나 함수 호출 블록이 만들어지는 임시 메모리 영역.
- 중괄호 블록이 끝나면 임시로 사용한 변수는 스택에서 제거됨.
- 스택에 기본자료형은 값이 저장되고, 참조 자료형은 주소가 저장되어 힙(값은 힙에 있음)을 가르키게 된다.
※ 힙과 스택은 표의 화살표 방향대로 채워지기 때문에 너무 많이 메모리를 할당하는 객체가 있다면 Out of Memory 오류가 날 수 있고, 함수 호출이 재귀적으로 너무 많이 일어나면 Stack Overflow 오류가 발생 할 수 있다.
※ JVM을 사용하는 프로그램에는 동적 메모리 영역의 객체가 사용된 뒤 아무 참조가 없으면 자동으로 삭제하는 GC(Garbage Collector)가 있다.
출처 : Do it! 코틀린 프로그래밍
'- 안드로이드' 카테고리의 다른 글
force checkout, smart checkout (0) | 2023.11.14 |
---|