복사 가비지 수집기는 메모리 조각화를 어떻게 피합니까? 또한 힙 공간 사용에 어떤 영향이 있습니까?가비지 수집기 복사
내 가청 가비지 수집기는 모든 도달 가능한 개체를 힙에서 힙의 다른 섹션으로 복사합니다. 뒤에 남겨진 모든 객체는 더 이상 필요 없으며 따라서 제거됩니다.
이것이 올바른 이해 인 경우 어떻게 메모리 조각화를 피할 수 있습니까?
이 프로세스는 복사 한 모든 항목의 중복을 갖기 때문에 많은 힙 공간을 사용해야합니다.
복사 가비지 수집기는 메모리 조각화를 어떻게 피합니까? 또한 힙 공간 사용에 어떤 영향이 있습니까?가비지 수집기 복사
내 가청 가비지 수집기는 모든 도달 가능한 개체를 힙에서 힙의 다른 섹션으로 복사합니다. 뒤에 남겨진 모든 객체는 더 이상 필요 없으며 따라서 제거됩니다.
이것이 올바른 이해 인 경우 어떻게 메모리 조각화를 피할 수 있습니까?
이 프로세스는 복사 한 모든 항목의 중복을 갖기 때문에 많은 힙 공간을 사용해야합니다.
이것이 올바른 이해 인 경우 어떻게 메모리 조각화를 피할 수 있습니까?
개체를 "새 힙"에 복사 할 때 간격을 두지 않고 개체를 서로 바로 붙여야하기 때문입니다.
이 프로세스는 복사 한 모든 항목의 중복을 갖기 때문에 많은 힙 공간을 사용해야합니다. 맞습니까?
수집 프로세스 중에 만. 그렇게하면 모든 "원본"이 할당 해제되고 그 공간이 다시 해제됩니다.
또한 이와 같은 가비지 수집기는 "generational"입니다. 복사 가비지 수집은 수명이 짧은 개체에 사용되며 수명이 긴 개체는 다르게 처리됩니다. 이렇게하면 공간 문제를 줄이는 데 도움이 될뿐만 아니라 컬렉션 시간을 단축 할 수 있습니다.
기본 이해가 정확합니다. 도달 가능한 객체를 복사 할 때 하나의 블록에 여유 공간을 남겨두면 조각을 피할 수 있습니다. 실제로 많은 공간이 필요합니다. 실제로 공간의 2 배와 부기에 대한 약간의 변경이 필요합니다.
메모리 조각화는 두 개의 활성 청크 사이에서 메모리 덩어리가 할당 해제 될 때 발생합니다. 메모리 블록을 이렇게 생각해보십시오.
AAAAAAAAAAAAAAAABBBBCCCCCCCCCCCC
B가 더 이상 필요하지 않다고 가정합니다. 우리는 이제 B는 우리가 같은 것을 가지고 사용하던 공간 ...
AAAAAAAAAAAAAAAA----CCCCCCCCCCC
을 확보하면 우리는 오히려 작은 물체를 넣을 수 차이가 있습니다. 있도록 복사 가비지 수집기가 주위에 물건을 움직일 수있는 우리
AAAAAAAAAAAAAAAACCCCCCCCCCC---- (more free space here
)
대부분의 현대 수집가 자리에서 물건을 이동할 수 있습니다 ... 있습니다. 즉, C가 "이전"되어 B의 이전 공간을 차지할 수 있다는 것을 알 수 있으며 따라서 메모리 오버 헤드가 없습니다.
위키에는 몇 가지 장점과 단점이 있습니다. http://en.wikipedia.org/wiki/Garbage_collection_(computer_science)#Moving_vs._non-moving – delnan