[자바]/자바 문법

[Java] 메모리 구조 (static, stack, heap)

쿠릉쿠릉 쾅쾅 2021. 10. 22. 14:04
728x90

 

프로그램을 구동하기 위해서 운영체제가 메모리(RAM)에 데이터 및 명령어를 저장할 공간을 할당하여 줌

메모리 공간은 크게 Static, Stack, Heap 영역으로 구분되고 데이터타입(자료형)에 따라 나눠서 할당됨

 

java 파일은 크게 필드(field), 생성자(constructor), 메소드(method)로 구성됨

 

 

▒ Static area (스태틱 메모리 영역)

  • 필드 부분에서 선언된 변수(전역변수)와 정적 멤버변수(static이 붙은 자료형)가 저장되는 공간
  • Static 영역의 데이터는 프로그램의 시작부터 종료가 될 때까지 메모리에 남아있음. 그래서 static 메모리에 있는 데이터들은 프로그램이 종료될 때까지 어디서든 사용이 가능함
  • static 데이터를 무분별하게 많이 사용할 경우 메모리 부족 우려 존재

 

 

▒ Stack area (스택 메모리 영역)

  • 메소드 내에서 정의하는 기본 자료형에 해당되는 지역변수의 데이터 값이 저장되는 공간
  • 메소드가 호출 될 때 메모리에 할당되고 종료되면 메모리에서 사라짐

 

 

▒ Heap area (힙 메모리 영역)

  • 참조형(Reference Type) 데이터 타입을 갖는 객체(인스턴스), 배열 등이 저장 되는 공간
  • 참조형 객체 경우 실제 데이터를 갖고 있는 Heap 영역의 참조 값을 Stack 영역의 객체가 갖고 있음

 

 

728x90