局部變量到底是什麼背後的bug-死存儲機制,一個局部變量??死存儲在Java
有的說死存儲變量的錯誤,當你分配一個值變量,但請不要在代碼塊/功能(我面臨着同類的錯誤)再次使用該變量發生。
void foo(){
String str = someObj.getString();
//some code but str is never used after assignment...
}
但還有一種情況,你會初始化值的變量的情況下,但後來在隨後的指令,你與其他一些值替換變量的值。
List<String> list = new ArrayList<>();
list = someobj.getList();
在這種情況下,>通過新的ArrayList <創建的對象()是從未使用過,其也被定義爲死存儲。
我們有垃圾收集在java中的機制,它看起來這樣的孤兒對象後,負責以優化內存。 因此,如果垃圾回收處理內存泄漏,那麼爲什麼我們會將這個死存儲的bug報告給局部變量?
能垃圾收集器發揮這個bug什麼作用?
它很清楚,GC是不能夠識別這種死店!但是,爲什麼GC不能識別它?
注:我的意見是,開發人員應避免分配這是從來沒有進一步使用的值這樣的錯誤。但是,這仍然是我懷疑的一個疑問,現在我想要一個結構良好和技術上的答案...;)
歡迎來到Stack Overflow!這個問題似乎對於這個網站來說過於寬泛。我們專注於解決定義明確的技術問題,而不是寫關於Java垃圾收集的散文(除非需要解決提問者發佈的代碼中的特定技術問題)。有關更多信息,請參閱http://stackoverflow.com/help/on-topic。 – ZeroOne