별의 공부 블로그 🧑🏻‍💻
728x90
728x170

프로그램의 메모리 영역

 

코드 영역
(Code)
 
데이터 영역
(Data)
 

(Heap)
스택 영역
(Stack))

 

  • 프로그램이 사용되는 메모리 영역
    • 코드(Code) 영역
      • 명령어가 들어가는 영역
    • 데이터(Data) 영역
      • 프로그램이 컴파일되면 정적 변수문자열 등이 들어가는 정적 메모리 영역
      • 정해져 있어서 실행 중에 오류가 발생할 가능성이 적음.
      • JVM 에서는 이 영역을 메서드 정적 영역(Method Static Area) 으로도 부름.
    • 힙(Heap) 영역
      • 실행 중 생성되는 객체 가 만들어지는 동적 메모리 영역
      • 프로그램이 동작하는 도중에 위쪽 그림의 화살표 방향으로 채워짐. (↓)
        • 너무 많이 메모리를 할당하는 객체가 있을 경우
          • Out of Memory 오류가 발생할 수 있음.
        • 함수 호출이 재귀적으로 너무 많이 일어날 경우
          • Stack Overflow 오류가 발생할 수 있음.
    • 스택(Stack) 영역
      • 코드 블록인 중괄호({}) 안에 사용한 변수함수 호출 블록 이 만들어지는 임시 메모리 영역
      • 중괄호 블록을 빠져나오면, 임시로 사용한 변수는 스택에서 제거됨.
      • 프로그램이 동작하는 도중에 위쪽 그림의 화살표 방향으로 채워짐. (↑)
        • 너무 많이 메모리를 할당하는 객체가 있을 경우
          • Out of Memory 오류가 발생할 수 있음.
        • 함수 호출이 재귀적으로 너무 많이 일어날 경우
          • Stack Overflow 오류가 발생할 수 있음.
    • JVM 을 사용하는 프로그램
      • 동적 메모리 영역 (힙 등) 의 객체가 사용된 뒤, 아무 참조가 없으면 자동으로 삭제하는 GC(Garbage Collector) 가 있음.

 


내용 출처 : Do It! 코틀린 프로그래밍(황영덕 지음, 이지스퍼블리싱)

728x90
그리드형(광고전용)
⚠️AdBlock이 감지되었습니다. 원할한 페이지 표시를 위해 AdBlock을 꺼주세요.⚠️
starrykss
starrykss
별의 공부 블로그 🧑🏻‍💻


📖 Contents 📖