2011-01-06 7 views
0

StudentRegistrar 클래스를 인스턴스화 할 때 아래 코드는 어떤 역할을합니까? 그것은 RecordManager의 인스턴스를 생성Java 초기화 질문

public class StudentRegistrar 
{ 
    public StudentRegistrar(); 
    { 
     new RecordManager().Initialize(); 
    } 
} 

답변

4

에 컴파일되지 않습니다. Initialize()RecordManager에 대한 참조를 보유 할 수있는 새 스레드를 생성 할 수 있습니다. 새 스레드는 가비지 수집 루트이므로 RecordManager 참조는 해당 루트에서 도달 할 수 있으므로 정리되지 않습니다.

정말 어떤 Initialize에 따라 달라집니다!

1

Initialize() 메소드를 호출 한 후 RecordManager의 인스턴스를 파괴한다.

편집 : 사실 그것이 필요한 즉시 RecordManager을 파괴하지 않는 때문에 가짜 ;

+3

* RecordManager의 인스턴스를 파괴합니다. *는 RecordManager의 인스턴스를 Garbage Collection에 사용할 수 있도록합니다. * –

+0

@Sean 파괴라는 단어가 올바르지 않지만 쓰레기 수거가 가능하다는 데 동의합니다. initialize 함수가 RecordManager 인스턴스에 대한 강력한 참조 또는 소프트 참조를 유지하는 객체를 만들지 않는 경우에만 true입니다. sjr의 응답은 기술적으로 정확합니다. – LINEMAN78

+0

@ LINEMAN78 sjr은 많은 가정을합니다. 가정이 옳은가에 따라 대답이 정확합니다. –