프로그램의 메모리 영역

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