일반적인 세대 가비지 수집기는 최근 할당 된 데이터를 별도의 메모리 영역에 유지합니다. 일반적인 프로그램에서는 많은 데이터가 수명이 짧으므로 어린 가비지 (작은 GC주기)를 자주 수집하고 오래된 가비지를 수집하는 것은 메모리 오버 헤드와 GC를 수행하는 데 소요되는 시간 사이의 좋은 절충안입니다. 직관적으로, 단일 지역 수집기와 비교하여 세대 가비지 수집기의 이점은 캐시에 대한 …
가비지 수집 언어 디자인 관련 의사 결정에 대한 통찰력을 찾고 있습니다. 어쩌면 언어 전문가가 나를 밝힐 수 있습니까? 나는 C ++ 배경에서 왔 으므로이 지역은 당황 스럽습니다. Ruby, Javascript / ES6 / ES7, Actionscript, Lua 등과 같은 OOPy 객체 지원을 통해 거의 모든 현대 가비지 수집 언어가 소멸자 / 최종 …
그래서 가비지 컬렉터가 어떻게 작동하는지 생각하고 흥미로운 문제를 생각했습니다. 가비지 수집기는 모든 구조를 동일한 방식으로 통과해야 할 것입니다. 그들은 연결된 목록이나 균형 잡힌 나무 등을 가로 지르는 날씨를 알 수 없습니다. 또한 검색시 너무 많은 메모리를 사용할 수 없습니다. 가능한 한 가지 방법과 모든 구조를 통과한다고 생각할 수있는 유일한 방법은 …
가비지 콜렉션은 회수 할 수있는 메모리를 찾기 위해 살아있는 모든 오브젝트를 방문해야합니다. (많은 세대가있는 것은 이것을 조금 지연시킵니다) 모든 것이 동일하므로 다른 블록을 페이징하고 일부 객체를 페이징하기 전에 이미 RAM으로 페이징 된 객체를 먼저 방문하는 것이 좋습니다. 또 다른 가능성은 OS가 프로세스에서 램 페이지를 가져 가기를 원할 때 GC에 페이지를 …
사람들은 수동 메모리 관리에 질려서 가비지 수집을 발명했으며 인생은 합리적으로 좋았습니다. 그러나 다른 모든 자원 유형은 어떻습니까? 파일 디스크립터, 소켓 또는 심지어 데이터베이스 연결과 같은 사용자 생성 데이터? 이것은 순진한 질문처럼 느껴지지만 누군가가 묻는 곳을 찾을 수 없습니다. 파일 디스크립터를 고려해 봅시다. 프로그램이 시작할 때 4000 fd 만 사용할 수 …
"Swift는 클래식 (추적) GC를 수행하지 않고 ARC를 사용합니다." 그러나 Swift 의미 체계에 참조 계산이 필요한 것이 있는지 확실하지 않습니다. 추적 GC를 사용하기 위해 자체 Swift 컴파일러 및 런타임을 빌드 할 수있는 것으로 보입니다. 그렇다면 Swift에 대한 "참조 횟수"는 정확히 무엇입니까? 애플의 구현 또는 언어 자체? 언어 자체에 해당 레이블을 사용할 …