String 클래스는 문자열 클래스입니다. String 클래스 객체를 생성하는 아래와 같은 코드를 작성하면 조금 특이하게도
String hello = "world";
아래와 같은 방식으로 값을 찾습니다.
String Constant Pool 은 intern
된 문자열 정보를 저장하는 곳이며, GC 에서 얘기하는 Old 영역에서 살아남은 객체가 영원히 남아있는 곳은 아닙니다. 이 영역에서 GC가 발생할 수도 있는데, 여기서 GC가 발생해도 Major GC 의 횟수에 포함된다고 합니다.
이와같은 String 의 불변성(immutable) 으로인해, String 클래스는 불변이라고 불리며 메모리에 할당하는 new String(”world”)
와 같은 방식을 사용하지 않아도 됩니다. 만약 이와같이 생성자를 이용하는 경우, 똑같은 문자열이라도 서로 다른 메모리를 가리키기 때문에 동등비교인 ==
연산시 true
를 반환하지 않습니다.