Boehm 가비지 콜렉터
Boehm garbage collector기타 이름 | bdwgc |
---|---|
원저작자 | 한스-예르겐 보엠 |
개발자 | 이반 마이단스키 등 |
초기 릴리즈 | 전 |
안정된 릴리스 | 8.0.6 / 2021년9월 28일, 전( |
프리뷰 릴리즈 | 8.2.0 / 2021년9월 29일, 전( |
저장소 | |
기입처 | C |
유형 | 가비지 콜렉터 |
면허증. | X11과 유사 (프리 소프트웨어) |
웹 사이트 | www |
Boehm-Demers-Weiser 가비지 콜렉터(단순히 Boehm GC라고도 함)는 Hans Boehm, Alan Demers 및 Mark Weiser에 [2][3]의해 개발된 C 및 C++[1]용 보수적인 가비지 콜렉터입니다.
Boehm GC는 X11 라이선스와 유사한 허용 자유 소프트웨어 라이선스로 배포되는 자유 소프트웨어입니다.이 수집가를 소개하는 첫 번째 논문은 1992년에 나왔다.[4]
설계.
Hans Boehm은 수집기의 작동을 다음과 같이 설명합니다.
수집기는 마크 스위프알고리즘을 사용합니다.적절한 종류의 가상 메모리를 서포트하는 operating system으로 증분 및 세대별 컬렉션을 제공합니다.(현재는 SunOS[45], IRIX, OSF/1, Linux 및 Windows를 포함하지만 다양한 제한이 있습니다.)오브젝트가 수집될 때 완료 코드를 호출할 수 있습니다.이러한 정보가 제공되는 경우 유형 정보를 이용하여 포인터를 찾을 수 있지만 일반적으로 이러한 정보 없이 사용됩니다.
--
Boehm GC는 메모리 관리가 수동으로 이루어지는 리크 검출[5] 모드에서도 실행할 수 있지만, Boehm GC는 정상적으로 이루어지고 있는지 확인할 수 있습니다.이 방법으로 프로그래머는 메모리 누수와 이중 할당 해제를 찾을 수 있습니다.
Boehm GC는 코드라고 불리는 C 문자열 처리 라이브러리와 함께 배포됩니다.이것은 C++(소형 어레이의 연속 트리)의 로프와 비슷하지만 적절한 할당 해제를 위해 참조 카운트를 사용하는 대신 가비지 컬렉션에 의존하여 개체를 해방합니다.코드는 매우 큰 텍스트의 처리, 중간에 텍스트의 수정, 슬라이스, 연결, 변경 이력 보관(언도/레도 기능)에 적합합니다.
작동
가비지 콜렉터는 단순히 치환하는 것만으로 대부분의 수정되지 않은 C 프로그램에서 작동합니다.malloc()와 GC_MALLOC() 콜, resultoc()를 GC_REALLOC() 콜, free() [1]콜 삭제.아래 코드 조각은 기존의 malloc이 아닌 Boehm을 [6]C에서 사용할 수 있는 방법을 보여줍니다.
#실패하다 <고객명>님.h> #실패하다 <stdio.h> #실패하다 <backet.h> 인트 주된(무효) { 인트 i; 컨스턴트 인트 크기 = 10000000; GC_INIT(); 위해서 (i = 0; i < > 크기; ++i) { 인트 **p = GC_MALLOC(크기 *p); 인트 *q = GC_MALLOC_아토믹(크기 *q); 주장하다(*p == 0); *p = GC_REALLOC(q, 2 * 크기 *p); 한다면 (i == 크기-1) 인쇄물("히프 사이즈 = %zu\n", GC_get_heap_size()); } 돌아가다 0; }
완전성을 위해 boehm은 GC_FREE()[7]를 통한 명시적 할당 해제를 지원합니다.모든 치환은 프리프로세서 매크로를 사용하여 실행할 수 있습니다.
용도 및 포트
Boehm GC는 Inkscape와 같은 C 또는 C++에서 구현되는 많은 프로젝트와 Crystal, GNU 컴파일러 for Java 런타임 환경, Portable을 포함한 많은 다른 언어의 런타임 환경에서 사용됩니다.NET 프로젝트, Embeddable Common Lisp, GNU Guile, Microsoft의 Mono 구현.NET 플랫폼(버전 2.8 이후 정확한 압축 GC 사용), 옵션인 GNUstep 및 libgc-d[8](D 프로그래밍 언어의 libgc에 대한 바인딩, 주로 MCI에서 사용).많은 Unix 버전(macOS 등)과 Microsoft Windows를 포함한 수많은 운영체제를 지원하며 증분 수집, 병렬 수집 및 다양한 피니셔 시멘틱스 등 다양한 고급 기능을 제공합니다.
레퍼런스
- ^ a b Koranne, Sandeep (2011), Handbook of Open Source Tools, Springer, pp. 151–154, Bibcode:2011hoos.book.....K, ISBN 978-1441977199.
- ^ C 및 C++의 가비지 컬렉터 Hans Boehm씨
- ^ Andrew W. Appel(1998), C의 현대 컴파일러 구현 - "Boehm Conservative Garbage Collector",
- ^ H. J. Boehm과 D.Chase, "가비지 콜렉터 세이프 C 컴파일을 위한 제안", C언어 번역 저널, 제4권 1992년 12월 2일자, 126-141페이지
- ^ 누출 검출기로서의 가비지 컬렉터 사용
- ^ 가비지 컬렉터 사용:간단한 예
- ^ "Garbage Collector Interface". www.hboehm.info.
- ^ libgc-d