기초 메모지

값 형식(Value Type), 참조 형식(Reference Type) 본문

토막글

값 형식(Value Type), 참조 형식(Reference Type)

라큐브 2022. 7. 15. 10:18

메모리에 데이터를 할당하는 방법은 두가지가 있습니다. 

1. 값 형식(Value Type) - 스택(Stack)

스택에 직접적인 값(Value)을 가지고 있어 값 형식이라고 합니다. 메서드(Method), 지역 변수(Local Variable), 매개 변수(Prameter)가 생성되고 소멸하는 공간입니다.

 

 


직접적으로  값(Value)을 저장하고 있기 때문에 메소드나 스코프(Scope)가 끝나면 순차적으로 값이 소멸됩니다.

 

2. 참조 형식(Reference Type) - 힙(Heap)

힙(Heap)이 직접적인 값(Value)을 가지고 있고 스택(Stack)에는 힙(Heap)에 저장되어 있는 주소(Address)를 참조(Reference)하는 변수가 생성됩니다.


주소(Address)만 참조(Reference)하여 변수가 소멸되어도 실질적인 값(Value)는 힙(Heap)에 남게 됩니다.


남은 값은 더 이상 참조되지 않기 때문에 가비지 콜렉터(Garbage Collector)  주기적으로 확인하여 소멸시키게 됩니다.

 

값 형식(Value Type) 과 참조 형식(Reference Type) 비교

  값 형식(Value Type) 참조 형식(Reference Type)
변수에 담긴 값 스택(Stack)의 실제적인 값 힙(Heap)의 주소 값
소멸 시점 메서드나 스코프 종료 이후 가비지 콜렉터에 의해 소멸
대상 메서드, 지역변수, 매개 변수 클래스(Class), 객체(Object) 등

 

반응형
Comments