객체들은 상당한 메모리를 차지하기 때문에, 사용이 종료된 객체는 삭제해야한다.
하지만 자바에는 삭제 연산자가 없다. 자바에서는 자동 메모리 삭제 시스템을 사용하는데, 이것을 가비지 컬렉션이라고 한다.
Television tv1 = new Television();
Television tv2 = new Television();
tv2 = tv1;
tv2가 가리키고 있었던 객체(=Television())는 위의 코드가 실행된 후에는 아무도 참조하지 않게 되어서(참조변수가 없다는 뜻) 더는 아무도 접근할 수 없다. 따라서 이 객체는 가비지 컬렉션의 후보가 된다.
System 객체의 gc() 메소드를 호출하여서 가비지 콜렉션을 요청할 수 있다. 그러나 가비지 컬렉터의 실행 여부는 전적으로 JVM이 판단한다.
System.gc(); // 가비지 컬렉션 요청
중요한 부분은 가비지 컬렉션은 비결정적이며 런타임에 가비지 수집이 발생할 때를 예측할 방법이 없다는 것이다. 가장 좋은 방법은 JVM을 실행할 때 플래그를 설정하는 건데, 코드가 넘 어렵고(...) 아직 쓸 일이 없을 것 같아서 일단 넘어가겠음.