Back-end/Java Language

Java heap, stack

prden 2022. 3. 18. 16:55

# ThreadLocal 과 관련하여 : 객체는 Heap 또는 Stack 메모리 영역에 배치시킬 수 있습니다. Heap 영역은 일반적으로 모든 thread에서 접근 할 수 있으며 stack은 thread 하나당 만들어 지는 메모리 영역으로 thread간 접근이 불가능한 것으로 알려져 있습니다.

 

https://dzone.com/articles/java-memory-management

1. stack

1) Heap 영역에 생성된 Object 타입의 데이터의 참조값이 할당된다.

2) 원시타입(primitive types)-byte, short, int, long, double, float, boolean, char 타입)의 데이터가 값과 함께 할당된다. (원시 타입의 데이터들에 대해서는 참조값을 저장하는 게 아니라 실제값을 stack에 저장하게 된다.)

3) 지역 변수들은 scope에 따른 visibility를 가진다. 각 Thread는 자신만의 stack을 가진다. 

-> 어떻게 작동하는지 아래 링크 예시 봐

 

2. Heap

Heap 영역에는 주로 긴 생명주기를 가지는 데이터들이 저장된다. 대부분의 오브젝트는 크기가 크고, 서로 다른 코드블럭에서 공유되는 경우가 많다. (애플리케이션의 모든 메모리 중 stack에 있는 데이터를 제외한 부분이라고 보면 된다)

모든 Object 타입(Integer, String ArrayList,...)은 heap 영역에 생성된다. Heap 영역에 있는 오브젝트들을 가리키는 래퍼런스 변수가 stack에 올라간다. 

-> 어떻게 작동하는지 아래 링크 예시 봐

 

 

https://yaboong.github.io/java/2018/05/26/java-memory-management/

 

자바 메모리 관리 - 스택 & 힙

개요 Java 에서 메모리 관리는 어떻게 이루어지는지 알아보기 위함. Stack 과 Heap 영역 각 역할에 대해 알아본다. 간단한 코드예제와 함께 실제 코드에서 어떻게 Stack 과 Heap 영역이 사용되는지 살펴

yaboong.github.io

 

'Back-end > Java Language' 카테고리의 다른 글

직렬화(Serialization)  (0) 2022.10.12
for 문 자세히 알기  (0) 2022.03.20
ThreadLocal  (0) 2022.03.18
instanceof, java  (0) 2022.03.17
System.out과 logging  (0) 2021.12.05