클래스 객체를 만들던 중에 궁금한 점이 생겼다.
Student 객체를 생성하고, 이를 students1 변수에 할당한다.
students1이 참조하는 객체의 name필드에 "학생1"값을 할당한다.
이 name필드는 객체가 제거될 때까지 students1이 가리키는 인스턴스에서만 접근 가능한 인스턴스 변수이다.
새로운 Student객체를 생성하여 students 변수에 다시 할당한다. 기존 객체는 더이상 참조되지 않게 된다. 이로 인해 두 번째로 생성된 객체만이 students1변수에 의해 참조된다.
public static void main(String[] args) {
Student students1 = new Student();
students1.name = "학생1";
students1 = new Student();//가비지 발생
students1.name = "학생2";
System.out.println("이름:" + students1.name);
//"학생2"라는 값이 출력된다.
}
기존의 "학생2"으로 생성된 Student객체는 더 이상 참조를 하지 않는데 해당 메모리는 어떻게 되는 걸까?
결론은 유효하지 않은 메모리는 JVM의 가비지 컬렉터가 불필요한 메모리를 알아서 정리해준다.
객체는