자바

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

dev_dean 2022. 11. 26. 23:51

가비지 컬렉션(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://"의 경우 더 이상 참조하고 있는 변수가 없기 때문에 메모리가 해제된다. 이 과정이 가비지 컬렉션이 작동하는 과정이라고 할 수 있다.