«garbage-collection» 태그된 질문

2
순수 언어에서 가비지 콜렉션은 어떻게 다릅니 까?
Haskell과 같은 순수한 언어에서는 모든 데이터를 변경할 수 없으며 기존 데이터 구조를 변경할 수 없습니다. 또한, 불변 데이터 및 기능적 프로그래밍 패턴에 대한 많은 알고리즘이 본질적으로 대량의 가비지를 map생성합니다 (예 : 중간 목록을 작성하는 체인 ). 가비지 수집기는 그렇지 않은 순도에 직면하여 어떤 전략과 기술을 사용합니까? 순전 한 상황이 아닌 …

6
LMAX 팀이 Java를 사용하고 GC를 피하기 위해 아키텍처를 설계 한 이유는 무엇입니까?
LMAX 팀 이 Java로 LMAX Disruptor 를 설계했지만 모든 설계 포인트가 GC 사용을 최소화하는 이유는 무엇 입니까? GC를 실행하지 않으려면 왜 가비지 수집 언어를 사용해야합니까? 그들의 최적화, 하드웨어 지식 수준 및 그들이 생각하는 생각은 훌륭하지만 왜 Java입니까? Java 또는 다른 것에 반대하지 않지만 왜 GC 언어입니까? 왜 GC없이 D 나 …

9
메모리 관리되지 않는 프로그래밍의 복잡성은 무엇입니까?
다시 말해서, 자동 가비지 콜렉션은 어떤 특정 문제를 해결 했습니까? 저수준 프로그래밍을 한 번도 해본 적이 없으므로 리소스 확보가 얼마나 복잡한 지 알 수 없습니다. GC가 해결하는 버그의 종류는 (적어도 외부 관찰자에게는) 자신의 언어, 라이브러리, 개념, 관용구 등을 잘 아는 프로그래머가하지 않는 종류의 것으로 보입니다. 그러나 나는 틀릴 수있다 : …

7
수동 메모리 관리보다 가비지 수집 시연
가비지 수집 이 (이론적으로) 수동 메모리 관리보다 빠를 수 있는 많은 곳에서 읽었습니다 (허리, 심지어 직접 작성했습니다 ). 그러나, 보여주는 것보다 말하는 것이 쉽지 않습니다. 실제로이 효과가 실제로 나타나는 코드는 본 적이 없습니다. 이 성능 이점을 보여주는 코드를 가진 사람이 있습니까?

1
가비지 수집기가 힙의 객체를 압축하면 스택의 참조가 변경됩니까?
이것은 간단한 질문처럼 보이지만 주제를 많이 읽은 후에도 여전히 명확한 대답을 찾지 못했습니다 (아마도 너무 간단하기 때문에). 내 질문은 이것입니다 : 가비지 수집기가 힙의 객체를 압축하면 스택의 해당 객체에 대한 참조가 어떻게 업데이트됩니까? 두 가지 가능한 솔루션을 생각할 수 있습니다. 스택 (및 힙의 참조)을 살펴보고 객체의 새 위치를 가리 키도록 …

6
가비지 수집기는 수집 할 때마다 전체 메모리가 검색되지 않도록하려면 어떻게합니까?
일부 (최소한 Mono 및 .NET) 가비지 수집기는 자주 스캔하는 단기 메모리 영역과 덜 자주 스캔하는 보조 메모리 영역을 가지고 있습니다. 모노는 이것을 보육원이라고 부릅니다. 어떤 객체를 폐기 할 수 있는지 알아 내기 위해 루트, 스택 및 레지스터에서 시작하여 모든 객체를 스캔하고 더 이상 참조되지 않는 모든 객체를 폐기합니다. 내 질문은 …


3
가비지 콜렉션에 해시 테이블을 사용하면 마크 및 스윕의 세계 문제를 해결할 수 있습니까?
mark-sweep-compact 가비지 수집 알고리즘에서는 참조 그래프가 일치하지 않고 객체를 가리키는 모든 참조의 값을 바꿔야하므로 객체를 재배치 할 때 세계를 멈춰야합니다. 그러나 객체 ID가 키이고 포인터가 값으로 해시 테이블이 있고 참조가 객체 주소 대신 해당 ID를 가리키는 경우 참조를 수정하면 하나의 값만 변경하고 객체가 필요한 경우에만 일시 중지해야합니다 복사하는 동안 작성하려고합니다 …

2
가비지 콜렉션은 비 결정적이므로 안전한 난수 생성에 사용되지 않는 이유는 무엇입니까?
/ dev / random은 엔트로피의 좋은 소스이며 일반적으로 사용되는 것입니다. 최소한 Java에서는 GC를 읽는 것처럼 가비지 수집 데몬이 비 결정적으로 실행되는 것으로 보입니다. . 이것이 사실이라면 왜 가비지 수집 타이밍을 변수 / dev / random 대신 엔트로피 소스로 사용하지 않습니까?

4
일시 중지 GC의 알고리즘은 무엇입니까?
자바를위한 일부 언어는 일시 중지 GC가 낮습니다. 이러한 GC는 전 세계를 일시 중지하지 않고도 대부분의 작업을 수행 할 수 있습니다. 스레드가 메모리를 수정할 때 메모리를 분석해야하기 때문에 프로세스가 시작될 때 사용할 수있는 데이터 또는 더 이상 완료 될 때가 아닌 가비지로 보이는 데이터가 발생하기 때문에 이는 매우 어려운 문제입니다. 참조는 …

5
메모리 관리 언어에 대한 참조 카운팅 패턴?
Java 및 .NET에는 메모리를 관리하는 멋진 가비지 수집기 및 외부 객체 ( Closeable, IDisposable)를 단일 객체가 소유 한 경우에만 신속하게 해제 할 수있는 편리한 패턴이 있습니다 . 일부 시스템에서는 두 구성 요소가 독립적으로 리소스를 소비해야하며 두 구성 요소가 모두 리소스를 해제 한 경우에만 해제해야합니다. 현대 C ++에서는 모든 문제가 해결 …

6
Java 개발자는 가비지 수집 알고리즘에 대해 알아야합니까? [닫은]
폐쇄되었습니다 . 이 질문은 의견 기반 입니다. 현재 답변을받지 않습니다. 이 질문을 개선하고 싶습니까? 이 게시물 을 편집 하여 사실과 인용으로 답변 할 수 있도록 질문을 업데이트하십시오 . 휴일 3 년 전 . 최근 가비지 수집 알고리즘에 대해 알고 있는지 인터뷰에서 물었습니다. 가비지 수집이 무엇인지 알았지 만 개발자로서 그것에 대해 …

3
모바일 플랫폼이 세대 별 가비지 콜렉션을 지원하지 않는 이유는 무엇입니까?
Windows Phone / Xbox 및 Android는 모두 세대 가비지 콜렉션을 지원하지 않습니다. 이것은 많은 프로그래머에게 실망입니다. 이에 대한 합법적 인 엔지니어링 이유가있는 것 같지만 이해할 수 없습니다. 현재 전화는 2001 년 세대 GC로 .NET 1.1을 실행하는 데스크톱 / 노트북보다 더 많은 메모리와 CPU를 가지고 있으며, ARM 프로세서가 x86보다 GC에서 나빠질 …

4
비 결정적 자원 관리가 유출 된 추상화인가?
내가 볼 수 있듯이, 결정 론적 파괴와 명백한 두 가지 형태의 자원 관리가 있습니다. 전자의 예는 C ++ 소멸자 및 스마트 포인터 또는 Perl의 DESTROY 하위이고 후자의 예는 Ruby의 관리 대상 자원 패러다임 또는 .NET의 IDispose 인터페이스입니다. 최신 언어는 후자를 선택하는 것으로 보이며, 비 참조 계수 품종의 가비지 수집 시스템을 …

4
C ++에서 스레드 간 빠른 메시지 전달을위한 메모리 관리
비동기 적으로 데이터 메시지를 전송하여 통신하는 두 개의 스레드가 있다고 가정하십시오. 각 스레드에는 일종의 메시지 큐가 있습니다. 내 질문은 매우 낮은 수준입니다. 메모리를 관리하는 가장 효율적인 방법은 무엇입니까? 몇 가지 솔루션을 생각할 수 있습니다. 발신자는을 통해 개체를 만듭니다 new. 수신자 전화 delete. 메모리 풀링 (메모리를 보낸 사람에게 다시 전송하기 위해) …

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.