본문 바로가기

자바

가비지 컬렉션(Garbage Collection)이란?

가비지 컬렉션(Garbage Collection)이란?

C언어를 보면 할당된 메모리의 사용이 끝나면 개발자가 직접 free함수를 호출해서 메모리를 해제해야 했다. 자바에서는 이렇게 개발자가 직접 메모리를 해제하지 않아도 되도록 자동으로 불필요한 메모리를 정리를 해주는데 이 역할을 하는 것이 가비지 컬렉션(Garbage Collection)이다.

 

public class Main {
    public static void main(String[] args) {
        String url = "https://";
        url += "www.naver.com";
        System.out.println(url);
    }
}

위 코드에서 "https://"으로 선언된 url이 다음 라인에서 "www.naver.com"이라는 문자열을 더하는 연산을 수행한다. 

이때 기존의 "https://"에 "www.naver.com"을 덧붙이는 연산을 수행하는 것이 아닌 "https://www.naver.com"이라는 새로운 문자열을 생성해서 heap에 할당된다. 이렇게 되면 "https://"의 경우 더 이상 참조하고 있는 변수가 없기 때문에 메모리가 해제된다. 이 과정이 가비지 컬렉션이 작동하는 과정이라고 할 수 있다.