4.1) OCJP/1Z0-851 / 2012-08-28

OCJP (1Z0-851 / 2012-08-28 / Exam A) - 50 번

kkikkodev 2015. 7. 31. 02:28



관련 이론 및 문법

(Garbage Collection 참고)

http://kkikkodev.tistory.com/185


문제 의도

주어진 소스코드를 실행하여 14 라인에 도달했을 때, 얼마나 많은 객체들이 가비지 컬렉션의 대상이 되는지 고르는 문제입니다.


답안

E


풀이 방법

이 문제는 Garbage Collection 에 대한 문제입니다. 1 번 라인에는 Animal 인터페이스가 정의되어 있습니다. 2 번 라인에는 Animal 인터페이스를 상속하는 Horse 클래스가 정의되어 있고, 멤버 변수로는 Long 형 인스턴스인 weight 를 선언하면서 동시에 1200L 로초기화하고 있습니다. 7 번 라인에는 Icelandic 클래스를 정의하고 있고, Horse 클래스를 상속하고 있습니다.


프로그램이 실행되면, 9 번 라인의 main 메소드가 실행됩니다. 10 번, 11 번, 12 번 라인을 실행하면서, Icelandic 형의 객체를 3 개 만들어, i1, i2, i3 인스턴스 변수가 각각 가리킵니다. Icelandic 클래스는 Horse 클래스를 상속하기 때문에, 내부적으로 weight 인스턴스 변수에 Long 형 객체도 각각 생성되게 됩니다.



그 다음, 13 라인의 첫 번째 문장인, i3 = i1; 을 실행하면, i1 이 가리키던 객체를 i3 도 같이 가리키게 됩니다.



그러면 기존에 i3 가 가리키던 객체는 더이상 접근할 수 없게 되어 가비지 컬렉션의 대상 후보가 됩니다. (Long 형 객체까지 총 2개) 그 다음, 13 라인의 두 번째 문장인, i1 = i2; 를 실행합니다. i2 가 가리키던 객체를 i1 도 같이 가리키게 됩니다.



그리고, 13 라인의 세 번째 문장인, i2 = null; 을 실행합니다. 이렇게 되면, i2 는 아무것도 안 가리키게 됩니다.



마지막으로, 13 라인의 마지막 문장인, i3 = i1; 을 실행합니다. i1 이 가리키던 객체를 i3 도 같이 가리키게 됩니다.


그러면, 위와 같이, 최종적으로, i1 과 i3 가 가리키던 객체들이 접근을 할 수 없게 되어, 가비지 컬렉션의 대상이 됩니다. (Long 형 객체까지 총 4 개) 따라서, 답안은, E 가 됩니다.