스택은 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 LIFO(Last In First Out) 구조로 이루어져 있다.
Java에서 Stack은 정적으로 할당된 메모리 영역이다.
Stack에서는 기본타입(boolean, char, short, int, long, float, double)의 데이터가 값이랑 같이 할당된다.
또한 Heap영약에서 생성된 생산된 Object타입의 데이터의 참조 값이 할당 된다.
Stack의 메모리는 쓰레드별로 할당된다.
메소드를 호출할 때마다 Frame을 스택에 추가하며 종료하면 Frame을 제거한다.(push and pop)
Java에서 Heap영역은 동적으로 할당된 메모리 영역이다.
힙영역에서는 모든 Object 타입의 데이터가 할당된다.
객체/배열을 저장하며 사용되지 않는 객체는 Garbage Collector가 자동으로 제거한다.
Heap영역의 object를 가리키는 참조변수가 Stack에 할당이 된다.
Heap은 stack과 다르게 Thread가 여러개 있어도 단 하나의 영역만 존재한다.
아래 사진을 보면 더 쉽게 이해 할 수 있다.

참조: 이것이 자바다
'몰입형학습' 카테고리의 다른 글
| OSI 계층 모델 7계층 ~ (0) | 2022.09.04 |
|---|---|
| [Java]컬렉션 프레임워크 (0) | 2022.07.07 |
| [Java] 모듈화( method and function) and Class and this의 이해 (0) | 2022.06.27 |
| [JAVA] 배열정리+ String 객체이해 (0) | 2022.06.23 |
| 진법변환 (0) | 2022.06.23 |
댓글