2016-12-07 12 views
-1

아래 시나리오에서 GC와 관련하여 어떤 일이 발생합니까? "a"에 대한 참조가 실제로 반환되지 않으므로이 참조를 범위에서 벗어나는 것에 대해 걱정할 필요가 없습니다. "a"의 반환은 실제로 실제로 일어나지 않으므로 범위를 벗어나 "b"만 반환됩니다.Java에서 GC와 관련하여 finally 블록을 사용할 때 Java가 참조를 반환하는 방식은 무엇입니까?

Object testFinally(){ 
    try { 
     Object a = new Object(); 
     return a; 
    } finally { 
     Object b = new Object(); 
     return b; 
    } 
} 

void callToTestFinally(){ 
    Object v = testFinally(); 
} 
+0

이 '마지막으로'남용은 GC와 어떤 관련이 있습니까? – Kayaman

+0

참조 "a"가 호출자 범위로 반환되거나 절대 반환되지 않으므로 "반환 값"이 무시됩니다. – newlogic

+0

어떻게 반환됩니까? return 문이 2 개 있지만 메서드가 하나의 값만 반환 할 수 있음을 알 수 있습니다. – Kayaman

답변

1

항상 같은 절차입니다. 인스턴스가 더 이상 강력한 레퍼 런스로 연결할 수 없으면 가비지 수집을받을 수 있습니다. 귀하의 목적과 다를 바 없으며, 범위를 벗어나 수집 될 수 있습니다.