2016-12-07 43 views
-1

在下面的情況下,GC如何發生? 我很確定對「a」的引用實際上不會返回,因此不需要擔心將該引用留在範圍內。 「a」的回報幾乎不會發生,因此超出範圍,只有「b」纔會返回?Java在Java中使用finally塊時,Java如何處理返回引用?

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

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

這是如何濫用'finally'與GC相關的? – Kayaman

+0

引用「a」是否返回到調用者作用域,還是從不返回,因此「return a」會被忽略? – newlogic

+0

它將如何返回?您有2個返回語句,但您知道該方法只能返回一個值。 – Kayaman

回答

1

與以往一樣的步驟。如果一個實例不能再被強大的引用訪問,它將有資格進行垃圾回收。對你而言,沒有什麼不同,最後它超出了範圍,可以收集。