힙 메모리 블록이 해제되지 않고 프로그램이 종료되는 메모리 누출 프로그램을 생각해 봅시다. 이것이 Java 프로그램 인 경우, 내장 된 가비지 콜렉터는 프로그램이 종료되기 전에 자동으로이 힙 블록의 할당을 해제합니다.메모리 누수 - 가비지 컬렉터가 없음
그러나 C++에서도 프로그램이 종료되면 커널이 프로세스와 관련된 모든 공간을 자동으로 할당 해제하지 않습니다. 또한 Java 코드에서 커널은 프로세스의 텍스트 부분 (코드)에 대한 공간을 할당 해제해야합니다 (스택 및 힙 부분이 가비지 수집기에 의해 할당 해제 된 경우에도). 가비지 컬렉터 기능을 사용하면 전반적으로 이점이 있습니다. 커널이 아닌 프로그램 자체에서 힙을 할당 해제하는 데 필요한 시간을 절약 할 수 있습니다. (저축이있는 경우)
EDIT : 응답을 조사한 첫 번째 의심은 GC가 메모리 사용량이 한도에 도달하면 자동으로 실행됩니까? 프로그램이 종료되기 직전에 GC를 호출하면 긴 프로그램에 유용하지 않을 수 있습니다.
프로그램을 아주 오랫동안 실행하려면 어떻게해야합니까? 이 경우 프로그램은 사용 가능한 모든 메모리를 할당 할 수 있으며 물론 실패합니다. 따라서 운영 체제가 종료 될 때 메모리를 확보하더라도 프로그램은 할당 된 메모리를 담당해야합니다. – Isaac
그럴 것입니다. 프로그램에서 언제든지 Java GC를 호출 할 수 있습니까? 메모리 사용량이 한도에 도달하면 자동으로 트리거 될 수 있습니까? 프로그램이 종료 될 때만 GC를 호출하면 장시간 실행되는 프로그램에 도움이되지 않습니다. – Hari