2017-03-01 71 views
4

Redux垃圾收集的工作原理。我們都知道,redux可以促進不變性。那麼,陳舊的狀態實例會發生什麼? 例如,在我的減速器,如果我有一個案例,如:Redux垃圾收集如何工作?

... 
case 'MY_ACTION': 
    return state.set('name', action.name) 
... 

現在,如果我火MY_ACTION行動100次,該代碼將創建一個新的對象100倍。

我的問題是以前的狀態對象不再使用會發生什麼。他們將留給JavaScript /瀏覽器垃圾回收器來決定如何處理?如果是的話,是不是這是一個性能問題,即不會這麼多陳舊的'狀態'對象增加JavaScript垃圾回收器的負載,從而降低代碼的性能?

+0

那麼沒有辦法手動清除JS代碼的內存,也沒有'window.runGC()'方法來強制垃圾回收器按照你的進度執行它,所以... – nnnnnn

+0

沒錯。但我相信,redux創作者必須考慮到這一點,並以某種方式處理它,因爲這是一個非常明顯的問題。 –

回答

3

Redux本身是一個簡單的狀態管理庫。任何與垃圾收集有關的事情都由Javascript引擎處理。所以不,Redux的創建者沒有「考慮到這一點」,因爲垃圾收集與Redux庫本身無關。

是的,不可變數據處理確實產生比直接變異更多的對象,但JS引擎處理得很好。