今天被問到 final 變數被回收的時機,我的想法是應該跟一般變數是一樣的
不過還是去查了一下,從 [1-3] 的討論看來,我的想法應該是沒錯。
final 變數可以有兩種情形:區域變數或者是類別成員
不管是哪一種狀況,當 final 變數所屬的 method 或者 class 結束了,final 變數就會跟著一起被標註成可回收。
因此跟一般變數的差別就是 final 變數沒辦法提早指定為 null,因此沒辦法提早回收
但除了這種狀況以外,final 變數跟一般變數一樣。
參考資料:
1、Does using final for variables in Java improve garbage collection?
2、Final member variables makes for better GC?
3、garbage collection and final variables
沒有留言:
張貼留言