변수에 저장하는 값 자체는 어디에서 오게 되는걸까?

자바의 상수 풀

  • 상수 풀은 JVM 에 존재하는 특별한 영역
  • 리터럴 + 상수 값들을 중복 없이 저장할 수 있는 메모리의 한 공간입니다.
  • 문자열, 숫자, 클래스 등 다양한 상수 정보가 저장됩니다.

상수 풀을 왜 사용하는가?

  1. 메모리상의 효율
    • 상수풀을 사용하는 경우 중복된 데이터 없이 하나의 값만 저장합니다.
    • 메모리의 사용량을 DOWN
  1. 성능 최적화
    • 상수 풀에 저장된 값을 재사용함으로써 객체 생성 비용을 줄일 수 있습니다.

문자열과 상수풀

  • 자바에서의 String 리터럴은 상수 풀에 저장됩니다!
  • 같은 문자열 리터럴의 경우 상수 풀에서 동일한 참조를 가리킵니다.
  • 물론 new String 연산자를 사용하는 경우에는 값이 동일해도 항상 다른 주소값을 가지겠죠.

상수 풀의 위치

Java 버전이나 JVM 구현에 따라 상수 풀의 위치나 관리법이 바뀔 수 있습니다.

하지만, 내부적인 변경은 개발자에게 투명하게 처리되기에, 별도로 고민할 필요는 없습니다.


Uploaded by N2T