[JAVA] Java 엔진 속을 들여다보기

여우는 야옹야옹·2024년 10월 28일
0

궁금한점

목록 보기
1/2

클래스 객체를 만들던 중에 궁금한 점이 생겼다.

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의 가비지 컬렉터가 불필요한 메모리를 알아서 정리해준다.
객체는

profile
성장중인 개발자 (머리속의 생각을 글로 옮기는 연습을 하고 있습니다.)

0개의 댓글