힙 메모리 수집에 사용되는 프로그래밍 언어의 가비지 수집은 다른 것이 아닌가요?

힙 메모리 수집에 사용되는 프로그래밍 언어의 가비지 수집은 다른 것이 아닌가요?

더 이상 사용되지 않는 객체를 재활용하기 위한 가비지 수집은 힙 메모리 할당을 해제하는 것입니까? 메모리 누수는 프로그램을 실행하기에 충분한 힙 메모리 공간이 없음을 의미합니까? 그렇다면 우리가 일반적으로 말하는 "메모리 부족"은 "런타임 메모리 부족", 즉 "힙 메모리"를 의미합니까?

답변1

가비지 수집은 일반적으로 실제로 힙 메모리를 나타냅니다.

메모리 누수와 메모리 부족 오류는 동의어가 아닙니다. 메모리 누수는 할당된 메모리의 일부 덩어리(예: OO 언어의 개체)가 더 이상 필요하지 않지만 어떤 이유로 할당 해제/수집할 수 없는 상황입니다(예: 프로그래머가 이에 대한 일부 참조를 지우는 것을 잊어버렸습니다).
메모리 부족 오류를 일으키지 않는 메모리 누수가 발생할 수 있으며(누수가 충분히 작은 경우) 메모리 누수 없이 이러한 오류가 발생할 수 있습니다(합법적으로 프로세스에 사용 가능한 것보다 더 많은 메모리를 할당하려고 시도하는 경우). ).

관련 정보