프로그래밍 공부/Java

문자열 상수 풀(String Constant Pool)이란?

hueco 2024. 1. 12.

문자열 상수 풀(String Constant Pool)이란?

Java의 String Pool은 문자열 상수 풀이라고도 불리며, JVM이 문자열 리터럴을 관리하는 특별한 영역입니다.

해당 영역은 JVM의 힙 메모리 안의 별도의 공간으로 존재합니다.

 

Stirng Pool의 주요 특징과 동작 방식은 다음과 같습니다.

 

1. 문자열 리터럴의 재사용

리터럴로 선언된 문자열은 문자열 풀에 저장되며, 이미 동일한 내용의 문자열이 존재하는지 확인합니다.

만약 동일한 내용의 문자열이 없다면 새로운 문자열이 풀에 추가되고, 이미 존재한다면 기존의 문자열을 재사용합니다.

 

2. 불변성 보장

String 클래스는 불변(immutable)하므로 한 번 생성된 문자열은 변경할 수 없습니다. 이는 문자열 풀에서 중복 검사와 재사용을 가능하게 합니다.

 

3. 메모리 최적화

문자열 풀을 사용하며 동일한 문자열이 여러 번 사용될 때 메모리 사용을 최적화할 수 있습니다. 동일한 문자열은 단일 인스턴스로 유지되므로 중복된 문자열이 메모리에 여러 번 저장되지 않습니다.

 

예들 들어, 다음과 같이 동일한 리터럴을 갖는 변수를 선언하고 두 변수의 주소값을 비교해보면,

 

위 코드의 실행 결과는 'Yes'가 출력됩니다.

출력 결과를 통해 == 연산자를 이용하여 두 변수 s1과 s2이 가진 주소값을 비교했을 때,

같은 주소를 갖는다는 것을 알 수 있습니다.

다음 그림은 위 코드의 변수 선언에 대한 메모리 할당을 간략히 표현한 그림입니다.

 

'프로그래밍 공부 > Java' 카테고리의 다른 글

삽입 정렬(Insertion Sort)  (0) 2024.01.18
거품 정렬(Bubble Sort)  (0) 2024.01.18
선택 정렬(Selection Sort)  (0) 2024.01.18

댓글