2012年12月6日 星期四

final 變數的垃圾回收

今天被問到 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

沒有留言: