1. 가비지 컬렉터란?
런타임 환경에서 동적으로 할당된 메모리의 누수를 방지하고 사용되지 않는
메모리를 찾아 회수하며 관리해주는 기능이다.
대표적으로 JAVA와 C#에 존재하며 자동으로 메모리를 관리해주지만
C++과 같은 언어는 직접 사용자가 메모리를 관리해줘야 한다.
2. 가비지 컬렉터의 동작 과정
1. 프로그램의 모든 메모리를 검사하여 객체의 사용여부를
루트 세트의 시작점을 사용하여 표시한다.
(루트 세트 - 전역 변수, 지역 변수, 정적 변수 등, 직접적으로 참조되는 객체들)
2. 객체의 사용여부가 표시되지 않은 객체를 메모리에서 제거한다.
제거한 메모리는 프로그램이 다시 사용이 가능하다.(메모리 누수 방지)
3. 사용되지 않는 객체의 메모리 공간을 메모리의 끝쪽으로 이동시켜
단편화 한다. (효율적인 메모리 사용)
3. 가비지 컬렉터의 문제점
가비지 컬렉터를 사용하면 메모리를 사용자가 직접 관리하지 않아도 된다는
장점이 있지만 그만큼 문제점이 여러가지 있다.
1. 대규모의 객체를 가비지 컬렉터가 관리할 경우 프로그램의 일시 중지,
CPU 사용량 증가의 문제가 발생할 수 있다.
2. 가비지 컬렉터가 자동으로 메모리를 관리해주는 만큼 사용자가 직접 제어할 수
없기 때문에 가비지 컬렉터의 동작을 예측할 수 없다. -> 예기치 못한 성능 저하 발생
따라서 이러한 문제점들을 해결하기 위해 가비지 컬렉터의
동작과 영향을 고려하며 개발을 진행해야 한다.
'간단한 IT 지식' 카테고리의 다른 글
[오늘의 지식] 트리의 순회 (0) | 2024.03.08 |
---|---|
[오늘의 지식] 해시 테이블(Hash Table) (3) | 2024.03.07 |
[오늘의 지식] C# 제네릭 컬렉션 (1) | 2024.03.05 |
[오늘의 지식] 컴퓨터의 실수 표현 (0) | 2024.03.04 |
[오늘의 지식] OOP (Object-Oriented Programming) (0) | 2024.02.29 |