
1. 원시타입 ( Primitive Type )
- 기본 자료형 : 정수형, 실수형, 문자형(Char), 논리형
- 크기가 정해져 있어, Stack 영역에 데이터 값이 저장된다. (= 메모리에 바로 저장 가능 )
2. 객체 타입(Reference type)
- 문자열(String), 배열, 클래스, 인터페이스
- 크키가 정해져 있지 않기 때문에, 데이터 값이 Heap 영역에 저장된다.
- Stack 영역에는 해당 데이터의 주소값을 저장하고, 값을 불러올 때 Heap영역에서 가져온다.
+ 값 사용법과 Garbage Collection
- Char를 비교할 경우 값을 비교하고, String을 비교할 경우 주소를 비교한다.
- 배열의 경우, 값을 출력할 때 Arrays.toString() 사용한다.
- 2차원 배열의 경우, 배열 안에 또 다른 배열을 가지기 때문에 Arrays.toString()을 사용하면 배열안에 있는 배열을 가리키는 주소 값을 출력한다. 따라서, Arrays.deepToString() 사용을 사용한다.
+ Garbage Collection(GC)의 필요성
- 객체 타입의 경우, 데이터 값을 사용하지 않을 때 메모리 성능을 위해 Heap 영역의 관리가 필요하다. 따라서, GC는 일정 주기에 따라 사용하지 않는 Heap 영역의 메모리와 Stack 영역의 주소를 제거해주며 관리해준다.