딱콩이의 봄

JAVA 메모리 모델 본문

개발/JAVA

JAVA 메모리 모델

코린이딱콩 2022. 8. 29. 17:24

✔️Java의 JVM이 관리하는 메모리 공간은 크게 3가지 영역으로 나눌 수 있습니다.

  • 스택 영역(Stack Area): 지역변수(Local Variable), 매개변수(Parameter)가 할당되는 영역으로 초기화가 진행되지 않습니다.
  • 힙 영역(Heap Area): 배열과 모든 인스턴스 객체가 할당되는 영역으로 자동 초기화가 진행됩니다.
  • 스태틱 영역(Static Area) 또는 메서드 영역: 메서드의 바이트 코드, static변수가 할당됩니다.

💡  스택

  • 정적 메모리 할당
  • 함수의 호출과 관계되는 지역변수와 매개 변수가 저장되는 영역
  • 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸
  • 푸시(push)동작으로 데이터를 저장하고, 팝(pop) 동작으로 데이터를 인출
  • 후입 선출(LIFO, Last-in-First-Out) 방식
  • 메모리의 높은 주소에서 낮은 주소의 방향으로 할당

😍장점

  • 액세스가 빠르다(할당, 해제가 빠르다)
  • 변수를 명시적으로 할당, 해제할 필요가 없다.

😒단점

  • 메모리 크기 제한
  • 지역변수만 가능

💡

  • 동적 메모리할당
  • 사용자가 직접 관리할 수 있는 '해야만 하는' 메모리 영역
  • 사용자에 의해 메모리 공간이 동적으로 할당되고 해제됨
  • 메모리의 낮은 주소에서 높은 주소의 방향으로 할당

😍장점

  • 변수를 전역적으로 액세스 할 수 있다.
  • 메모리 크기 제한이 없다

😒단점

  • 상대적으로 액세스가 느리다( 할당, 해제가 느리다)
  • 메모리를 관리해야 한다.(변수를 할당하고 해제하는 책임이 있다.)

 

🧐Reference

https://youtu.be/TzINBAwTCKc

https://velog.io/@tonic523

'개발 > JAVA' 카테고리의 다른 글

static & final 💡💡  (0) 2022.08.29
static & final💡  (0) 2022.08.29
this() Constructor  (0) 2022.08.29
생성자 오버로딩(Constructor Overloading)  (0) 2022.08.29
디폴트 생성자(Default Constructor)  (0) 2022.08.29
Comments