Replies: 2 comments
-
String Pool힙 메모리 영역에서 동일한 사용이유같은 문자열이 반복되어 사용될 때, 동작 원리리터럴로 생성된 문자열
new 키워드로 생성된 문자열
|
Beta Was this translation helpful? Give feedback.
-
String Pool은 JVM의 힙 메모리 영역에 위치하며, 문자열 리터럴을 저장하는 공간입니다. 자바에서 문자열 리터럴은 불변(immutable)이기 때문에, 한 번 생성된 문자열은 변경되지 않고 재사용 될 수 있습니다. 이러한 특성 때문에, JVM에서는 String Pool을 사용하여 동일한 문자열에 대한 중복 생성을 방지하고, 메모리 사용을 최적화하고 있습니다. 자바에서 문자열을 어떻게 생성하냐에 따라 저장되는 영역이 달라집니다. 첫 번째로 문자열 리터럴을 사용하는 방식은, JVM에서 먼저 String Pool 을 검사하여 동일한 문자열이 있는지 확인합니다. 존재할 경우, 해당 문자열 객체의 참조를 반환하고, 없을 경우 새로 생성하여 String Pool에 저장합니다. 하지만 new String() 을 사용하여 문자열을 생성될 경우, String Pool에 저장되지 않습니다. |
Beta Was this translation helpful? Give feedback.
-
String Pool은 자바에서 동일한 String 객체가 여러 번 생성되는 것을 방지하여 메모리를 절약하기 위해 JVM의 힙 메모리 내에 생성되는 특수한 메모리 영역입니다. 이 Pool에는 동일한 내용의 문자열 리터럴이 여러 번 생기지 않도록 관리됩니다.
사용하는 이유는 자바에서 문자열은 불변이므로, 동일한 내용의 문자열을 매번 새롭게 생성할 필요가 없기 때문입니다. 예를 들어, 코드 내에서 "Hello"라는 문자열을 여러 번 사용한다면, String Pool 덕분에 같은 내용의 문자열 객체를 재사용하게 되어 메모리를 절약할 수 있게 되고, 기존 객체의 참조를 반환하므로 속도가 향상되는 이점을 얻게 됩니다. 단, new 키워드를 사용해 String 객체를 생성하면 String Pool을 사용하지 않으며, 매번 새로운 객체가 생성됩니다.
Beta Was this translation helpful? Give feedback.
All reactions