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