반응형

Primitive Type

Primitive 타입은 원시 타입이라고도 아래와 같은 타입이 존재한다.

  • byte (1 byte, 정수형)
  • short (2 byte, 정수형)
  • int (4 byte, 정수형)
  • long (8 byte, 정수형)
  • float (4 byte, 부동소수점형)
  • double (8 byte, 부동소수점형)
  • char (2 byte, 문자형)
  • boolean (1 byte)

Primitive 타입은 일반적으로 Stack에 데이터가 저장 된다.

데이터를 메모리에 직접 저장하기 때문에 성능 우수

필요한 크기에 맞는 Primitive 타입을 선택하여 사용할 수 있으므로 메모리 사용에 효율적이다.

Reference Type

Reference Type은 참조 타입으로 객체를 참조하는 데이터 타입니다.

Reference Type에는 아래와 같은 타입이 존재한다.

  • 클래스 (class)
  • 배열 (array)
  • 인터페이스 (interface)
  • 열거형 (enum)

Reference Type의 경우는 데이터를 Stack이 아닌 Heap에 저장하고 그 데이터의 참조값을 Stack에 저장하여 데이터에 접근할 때는 Stack을 거쳐 Heap까지 가야하기 때문에 Premitive 타입 보다 느리다.

한가지 주의해야할 것이 Reference Type을 포인터라고 생각하는 경우가 있는데,

포인터는 주소를 직접 다루는 변수이고 Java의 Reference는 간접적으로 참조하는 변수이다.

Reference 변수로 데이터에 접근하지만 우리가 직접 메모리 주소를 조작하거나 할 수 없다.

Java의 메모리 관리는 가비지 컬렉터에 의해 자동으로 처리된다.

String의 경우는 조금 특별하다.

String a = “abc”;

형식으로 String 객체를 생성할 수 있는데, 이것을 String 리터럴이라고 하고, 데이터가 리터럴 풀에 저장되어 재사용되게 된다.

리터럴 풀은 heap의 일부이다.

String b = new String(”abc”);

이 경우는 새로운 String 객체를 리터럴 풀에 생성하는 것이 아닌 heap에 생성하게 된다.

반응형

'공부 > Java' 카테고리의 다른 글

Java SSL 인증서 검증 흐름 및 확인  (0) 2025.06.17
Out Of Memory 문제 분석  (0) 2025.05.31
[Java] HashMap get 메서드에 관하여  (0) 2021.09.13
JavaAgnet  (0) 2021.05.09
Java Virtual Machine(JVM)  (0) 2021.05.08

+ Recent posts