본문 바로가기
IT_Developers/JAVA

JAVA 메모리 - 스태틱(static), 스택(stack), 힙(heap) 이란?

by 고코더 2020. 3. 14.

자바에서 사용하는 메모리란?


안녕하세요.
고코더 입니다.


오늘은 자바에서 메모리를 사용하는 구조와 특징을 알아보려고 합니다. 다양한 메모리 용어를 통해서 자바를 배웠지만 별로 신경쓰지 않고 개발하는 경우도 많아서 어떤 것인지 가끔 질문을 하면 헤매는 경우가 있습니다. 그래서 이번 시간에는 자바에서 사용하는 메모리 종류와 특징을 알아보려고 합니다.



 메모리란?


메모리는 컴퓨터에서도 핵심 부품입니다. CPU가 처리할 데이터가 임시로 저장되는 그런 공간입니다. 하드디스크에 저장된 데이터를 메모리에 올려 실행 됩니다. 그래서 램을 우리가 흔히 주기억 장치라고 하고 하드디스크는 보조기억 장치라고 합니다. CPU와 함께 일을 진행하기 때문에 가장 중요한 요소 입니다. 그래서 컴퓨터가 좀 느리다 싶은데 예산이 없으면 메모리 스틱을 사다 끼우는 경우가 많습니다. 





 스태틱 메모리 (Static)


첫번째 알아볼 메모리 영역은 스태틱 메모리 입니다. 이는 전역 변수와 정적 멤버 변수 static이 붙은 자료형을 저장합니다. 문제는 한번 선언된 전역 변수는 언제 어디서든 꺼내 쓸 수 있습니다. 덕분에 개발시에 편리하지만 메모리가 계속 상주해 있습니다. 그래서 사이트가 느려지고 서버가 다운되는 경우가 발생하기도 합니다. 그래서 스태틱 메모리 영역은 정말 잘 사용해야 합니다.

- 전역변수를 저장
- 멤버변수를 저장
- 컴퓨터 종료시까지 메모리 상주
- 잘못 사용하면 혼남


 스택 메모리 (stack)


기본 자료형을 생성할때 저장되는 공간이 스택 메모리 영역입니다. 데이터 값이 저장되는 공간이라고 보면 됩니다. 메소드가 실행될때 할당 되고 메소드가 종료하면 함께 종료됩니다.

- 기본 자료형이 사용하는 메모리
- 메소드 실행, 종료와 함께 생명주기를 같이함



 힙 메모리 (heap)


인스턴스 생성할때 생성되는 메모리 형식입니다. new를 사용하여 객체를 생성하면 저장됩니다. 참조형 자료도 힙 메모리 영역으로 저장됩니다. 힙 참조 값은 스택 메모리 영역에서 가지고 있고 해당 객체를 통해서만 힙 메모리에 있는 인스터스들을 핸들링 할 수 있습니다.

- 참조 자료형 메모리
- 인스턴스 생성시에 할당
- 스택이 참조 값을 가지고 있고 핸들링한다.


마무리


한번만 읽어보면 쉬워요.


댓글