2017-03-01 69 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引擎处理得很好。