자바(Java) - 클래스, 객체에서 가비지 컬렉터(Garbage Collector)
예제
class Tv { // Tv의 멤버변수 String color; boolean power; int channel; // Tv의 메서드 void power() { power = ! power; } void channelUp() { ++channel; } void channelDown() { --channel; } } public class TvTest { public static void main(String[] args) { Tv t1 = new Tv(); // Tv = t1; t1 = new Tv(); 한문장으로 표현 Tv t2 = new Tv(); System.out.println("t1의 채널은 " + t1.channel + "입니다."); System.out.println("t2의 채널은 " + t2.channel + "입니다."); t1.channel = 7; t2.channel = 8; System.out.println("t1의 채널은 " + t1.channel + "입니다."); System.out.println("t2의 채널은 " + t2.channel + "입니다."); t2 = t1; // t1이 저장하고 있는 값(주소)를 t2에 저장한다. t1.channelDown(); // t1에 저장되어 있는 주소(객체) 값이 변경, 따라서 t2도 같은 주소를 참조하고 있어서 아래와 같은 결과가 나온다. System.out.println("t1의 채널은 " + t1.channel + "입니다."); System.out.println("t2의 채널은 " + t2.channel + "입니다."); // 같은 주소값을 저장하고 있다. System.out.println(t1); System.out.println(t2); } }
예제 코드를 보면, t2 = t1; 을 하면서 두 변수 모두 같은 주소(인스턴스)를 저장하고 있다.
원래 t2가 가리키고 있던 인스턴스는 어떻게 될까?
인스턴스는 메모리 공간을 차지하고 있다.
인스턴스는 자신을 참조하고 있는 참조변수가 하나도 없으면 더 이상 사용될 수 없다.
따라서 자바의 가비지 컬렉터(Garbage Collector)에 의해 자동으로 메모리에서 제거된다.
Author And Source
이 문제에 관하여(자바(Java) - 클래스, 객체에서 가비지 컬렉터(Garbage Collector)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@imchanyang/자바Java-클래스-객체에서-가비지-컬렉터Garbage-Collector저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)