Web/Java

[Java] Stack, Heap

hikr90 2025. 1. 9. 21:50

# Ram의 구성

- 배열과 변수는 Ram에서 저장 영역의 위치와 방식이 모두 다르다.

- Stack과 Heap의 영역은 각자의 영역에 데이터가 계속해서 저장된다.

  • Stack영역은 데이터가 누적되면서 점선이 아래로 증가,
  • Heap영역은 데이터가 누적되면서 점선이 위로 증가한다.

 

 
 
[예시] Ram 의 구성

 

[참고] 저장량이 너무 많으면 Stack Heap의 점선이 맞닿게 되는 저장공간 부족 현상(스택 오버플로우 에러) 이 일어난다.


 

 

OS Kernel Space

- 드라이버가 저장되는 영역

- USB등의 장치를 연결하는 경우, 컴퓨터는 USB를 인식하기위해서 운영체제를 통하여 하드웨어에 전기신호를 보내게된다.

- 이 전기 신호를 보내기위해서 드라이버가 요구되며 이 드라이버가 저장되는 영역이 OS KERNEL이다.

 

 

Stack & Heap

 

 

Stack

- 변수를 선언하는 경우, 값 자체가 변수명의 저장 공간 명칭으로 stack영역에 저장이 된다.

- new키워드를 사용하지 않은 변수의 값이 저장되는 영역

 

Heap

- 배열의 경우 선언시 new를 사용하는데, new키워드는 heap영역에 저장 영역을 확보하는 키워드이다.

- 이를 heap영역에 메모리를 할당받았다고 표현한다. (배열을 저장할 영역을 메모리상에서 확보)

- 인덱스를 통해서 stack에 있는 인덱스 주소값으로 heap에 있는 해당 값에 접근이 가능하다.

 

 
타입
Stack 영역
Heap 영역
변수
X = 10
X
배열
배열의 인덱스 주소값
배열의 실제 값 (배열 통째로 저장)

 

'Web > Java' 카테고리의 다른 글

[Java] 클래스  (0) 2025.01.09
[Java] 객체지향  (0) 2025.01.09
[Java] 컴파일  (0) 2025.01.09
[Java] Project 생성  (0) 2025.01.09
[Java] 자바 설치  (0) 2025.01.09