메모리 풀( Memory Pool )
프로그램이 동적으로 할당한 메모리를 관리하는 데 사용되는 메모리 영역
+ 그 영역에서 이뤄지는 할당과 해제, 메모리 관리와 관련된 조작들을 포함하는 개념
동적으로 할당된 메모리 관리에 대한 최적화와 관련이 있습니다.
동일한 크기의 메모리 블록들을 관리하고, 이 블록들을 할당하고 해제하는 역할을 수행
ex) Java에서의 가비지 컬렉션(Garbage Collection) 과 문자열 풀(String Pool)
가비지 컬렉션( Garbage Collection )
더 이상 참조되지 않는 객체를 판단하고 메모리에서 제거( 해당 객체가 차지하던 메모리 공간이 다른 용도로 재사용 가능한 상태로 전환 )하는 프로세스
주로 힙 메모리(Heap Memory)에 할당된 객체들을 관리
( 힙 메모리는 동적으로 생성된 객체들이 저장되는 영역 )
JVM( Java Virtual Machine )이 가비지 컬렉션을 수행, 주기적으로 실행되거나 메모리 부족 시에 실행됨
Java에서는 여러 가지 가비지 컬렉션 알고리즘이 존재하며, JVM 구현에 따라 다르게 동작할 수 있다.
(장점)
메모리 누수를 방지
프로그래머가 명시적으로 메모리를 해제할 필요 없이 자동으로 불필요한 객체를 처리
프로그램의 안정성과 성능을 유지
문자열 풀( String Pool )
동일한 문자열 값의 중복을 방지하여 메모리를 효율적으로 관리하기 위해 사용되는 별도의 저장 공간
Java에서 문자열 리터럴은 최초 사용 시에 문자열 풀에 인스턴스로 저장되고
, 이후에는 동일한 문자열 리터럴이 필요한 경우에는 이미 생성된 인스턴스를 참조합니다.
String str = "abc";
문자열 풀 속에 있는 문자열 인스턴스
여러 곳에서 "abc" 문자열을 사용한다면, 이 문자열은 문자열 풀에서 한 번만 저장되고, 이후에 "abc"를 참조하는 모든 코드에서는 동일한 문자열 인스턴스를 재사용합니다.
String str = new String("abc");
문자열 풀에 들어가지 않음, 문자열 리터럴과는 별개로 관리됨
동일한 값의 문자열이 이미 풀에 존재하더라도
, 새로운 문자열 인스턴스가 힙 메모리에 할당된다.
문자열 풀이 사용되지 않는다. 문자열 풀의 이점을 누리지 않는다.
"abc"이 문자열 풀에 저장되지 않는다.
문자열 리터럴( String Literal )
고정된 문자열 값을 나타내는 표기법
"Hello, World!"와 같이 큰따옴표로 둘러싸인 문자열
'Programing Language > JAVA' 카테고리의 다른 글
| java.lang 패키지( import 없이 사용 ) (0) | 2024.03.21 |
|---|---|
| JVM 메모리 공간 , 변수와 데이터 , Garbage Collector (0) | 2024.03.14 |
| Gradle (0) | 2023.11.27 |
| 클래스와 객체 01 (1) | 2023.11.22 |
| Java , JVM (0) | 2023.09.04 |