자바, 가비지 컬렉터(Garbage Collector)

Jakezo·2021년 7월 10일
0
post-thumbnail

Garbage Collector

  • 가비지 컬렉터는 동적으로 할당된 메모리들 가운데 더이상 사용하지 않는 메모리(인스턴스)를 찾아서 자동으로 수집해서 쓸모없는 메모리를 해제하는 기법이다.

  • 더이상 사용하지 않는 메모리는 어떠한 변수도 이것을 참조하지 않는 것을 의미한다.

public class Example{
    public static void main(String[] args){
        String a = new String("good");
        String b = new String("Bad");
        String c = new String("Normal");
        String d,e;
        
        a = null;
        d = c;
        c = null;
    }
}

다음과 같은 자바 코드가 있을때 8번 라인에서 가비지컬렉터가 발동한다.

String 객체는 이미 인스턴스가 a에 "Good" b에는 "Bad" c에는 "Normal"이 생성되었고 각각 이들을 참조하고 있다.

a -> 참조 -> "good" 문자열 인스턴스

b -> 참조 -> 'Bad" 문자열 인스턴스

c -> 참조 -> "Normal" 문자열 인스턴스

그런데 a = null 을 실행하는 순간

"good" 인스턴스와 변수 a와의 참조관계가 끊어지게 되고 "good" 문자열 인스턴스는 낙동강 오리알 신세가 되어 어떠한 변수도 자신을 참조하지 않게 되고 쓰레기 데이터가 된다.(아무도 참조하지 않는다.)

그것을 캐치하는 가비지 컬렉터가 발동되어 이 데이터를 수집해가면서 메모리를 관리하는 것이다.

String 객체뿐만아니라 우리가 코딩을 할때 발생하는 모든 인스턴스화는 메모리를 할당한다.

이러한 메모리관리에 있어서 가비지컬렉션은 프로그래머가 메모리 할당에 대해서 신경을 쓰지 않도록 하고 오로지 프로그래밍 알고리즘을 짜는데만 집중할 수 있게 해준다.

profile
탐험가

0개의 댓글