[Basic C++] #59_가비지 컬렉션

2022. 9. 27. 22:49· 언어/Basic C++
목차
  1.  
  2. [Basic C++] #59_가비지 컬렉션

 

[Basic C++] #59_가비지 컬렉션

C++의 "가비지 컬렉션"에 대해 알아보겠습니다.

"전문가를 위한 C"의 22 항목, "효과적인 메모리 관리"에 해당하는 내용입니다.

 

 


 

개념
가비지 컬렉션은 자동 메모리 관리 기법 중 하나로, 프로그램에서 더 이상 사용하지 않는 메모리를 자동으로 식별하고 해제하는 프로세스입니다. 가비지 컬렉션은 자동 메모리 관리를 통해 댕글링 포인터 발생을 방지하고, 편의성을 제공하지만, 런 타임 오버헤드를 유발합니다.

 

마크 앤 스윕 알고리즘
마크 앤 스윕 알고리즘은 가비지 컬렉션의 접근 방법 중 하나로 주기적으로 모든 포인터에 대해 해당 메모리를 참조하여 사용하는 부분이 있는지 검사하여 표시(마크)합니다. 각 검사 주기가 끝날 때마다 표시되지 않은 메모리를 "미사용"으로 취급하여 해제합니다. 마크 앤 스윕 알고리즘 사용을 위해 필요한 사항이 존재합니다!

1. 모든 포인터를 가비지 컬렉터에 등록하여 가비지 컬렉터가 순회하며 검사할 수 있도록 합니다.
2. 모든 객체를 "GarbageCollectible"을 상속하도록 합니다.
3. 가비지 컬렉터가 포인터들을 검사하는 동안, 병렬적으로(멀티쓰레딩) 해당 포인터에 접근하지 못하도록 합니다.

설명만 보면 별다른 큰 문제없이 편리하게 사용할 수 있는 툴로 보이지만, 단점들이 분명히 존재합니다!

1. 가비지 컬렉션을 수행중일 때 응답률이 떨어집니다.
2. 가비지 컬렉션 사용은 "비결정적인" 소멸자를 이용하며, 정확한 시점에 호출된다는 보장이 없습니다.

 

 

 

'언어 > Basic C++' 카테고리의 다른 글

[Basic C++] #61_객체 풀, Obejct Pooling  (0) 2022.10.07
[Basic C++] #60_스마트 포인터  (0) 2022.09.28
[Basic C++] #58_포인터, 배열과 포인터, 포인터 연산, 함수 포인터, 클래스 메서드 포인터  (0) 2022.09.22
[Basic C++] #57_동적 메모리  (1) 2022.09.20
[Basic C++] #56_cctype, 대문자+소문자 확인  (0) 2022.09.15
  1.  
  2. [Basic C++] #59_가비지 컬렉션
'언어/Basic C++' 카테고리의 다른 글
  • [Basic C++] #61_객체 풀, Obejct Pooling
  • [Basic C++] #60_스마트 포인터
  • [Basic C++] #58_포인터, 배열과 포인터, 포인터 연산, 함수 포인터, 클래스 메서드 포인터
  • [Basic C++] #57_동적 메모리
Hardii2
Hardii2
Hardii2
개발 블로그
Hardii2
전체
오늘
어제
  • 분류 전체보기
    • 알고리즘
    • 웹 개발
      • Node.js
      • React
    • 게임개발
      • DirectX12
      • 관련 지식
      • Unreal C++
      • Unreal 블루프린트
    • 언어
      • Effective C++
      • Basic C++
      • 디자인 패턴
      • 자료구조
      • 기술 질문
    • 문제 풀이
      • BOJ 문제 풀이
      • Programmers 문제 풀이
      • geeksForgeeks 문제 풀이
    • 수학
      • 확률과 통계
      • 게임수학
    • 개인프로젝트
    • 그룹프로젝트
      • PM
      • Dev
    • Github

블로그 메뉴

  • 홈
  • 글쓰기

공지사항

인기 글

태그

  • 최단 경로
  • unreal
  • 알고리즘
  • set
  • Effective C++
  • stl
  • 기술 질문
  • 정렬
  • C++
  • 그래프
  • 우선순위 큐
  • Unreal Blueprint
  • 트리
  • 개발
  • BFS
  • dfs
  • 디자인 패턴
  • DP
  • BOJ
  • programmers

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
Hardii2
[Basic C++] #59_가비지 컬렉션
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.