가비지 컬렉터

MSKim·2023년 2월 26일
0

Java

목록 보기
11/19

GC(Garbage Collection)

JVM의 메모리 관리 기법 중 하나로 시스템에서 동적으로 할당됐던 메모리 영역 중에서 필요없어진 메모리 영역을 회수하여 메모리를 관리해주는 기법이다

컴퓨터가 일을 할 때 처리할 정보들을 올려놓을 공간, 즉 메모리가 필요하다.
메모리가 크면 클수록 더 많은 정보들을 동시에 더 여러개 처리할 수 있게된다.(컴퓨터를 살 때 RAM을 보는 이유)

사용자가 코드를 짠다는 것은 컴퓨터에게 레시피를 써주는 것이다.
코드에 작성하는 변수들, 함수들, 객체들이 메모리 공간을 차지하는 요소들 즉, 재료와 도구들이 되는 것이다.
하지만 레시피대로 하다 메모리 공간이 꽉 차게 되면 컴퓨터가 뻗어버리는 문제가 발생하기 때문에 중간중간 사용한 것들은 치워줘야한다.

C 나 C++ 같은 오래된 언어에서는 코드에 malloc()을 일일이 써줘야했다.
아무리 신중하게 코드를 짜도 비워줘야 할 메모리 공간을 깜빡 놓치고 남겨두는 일들이 발생할 수 있는데
이것을 메모리 누수, memory leak 이라고 한다.(더 이상 사용되지 않는 객체들이 가비지 컬렉터에 의해 회수되지 않고 계속 누적이 되는 현상)

메모리 누수가 쌓여 메모리를 꽉 채우면 컴퓨터가 뻗게 된다.
그래서 자바를 비롯한 새로운 언어들에는 프로그래머가 해야할 일들을 대신해 주는 Garbage Collector라는 것을 도입하기 시작했다.
가비지 컬렉션의 소멸 대상이 되려면 다른 Reference 변수에서 참조하고 있지 않아야 한다.

profile
Today I Learned

0개의 댓글