我们正在为我们的Angular应用程序实现ngRedux。不过我担心的是:内存使用,尤其是移动设备的内存使用。
我们的store state对象看起来像这样:
{
leads : [],
filters: [],
applictionStatuses: [],
}假设我们的用户在leads列表中选择了一个datefilter,它将从我们的API中捕获30.000条leads (例如一整年)。
根据我对redux的理解,state对象将被克隆,然后下一个对象将如下所示
{
leads : [ {object}, {object} ...],
filters: [ dateRange: { start: {date}, end: {end} }],
applictionStatuses: [],
}当前状态下的leads对象将保存30.000条记录。否当用户更改日期筛选器时,它将更新状态并使用新的日期筛选器创建新的状态。它将捕获或多或少的记录,并将其转化为线索。
从理论上讲,状态对象可能如下所示:
{
leads : [ {object} ... times 40.000 ],
filters: [ dateRange: { start: {date}, end: {end} } ],
applictionStatuses: [],
}这不是意味着在这个时候,在内存中将有3个状态存储,总共0+ 30.000 + 40.000导程= 70.000导程在内存中。状态的任何进一步更改都会不断复制状态和引线。
只有在我提交并压缩状态之前,我才会占用大量内存来记录前导记录。
我的推理是否有误,或者这是redux不可避免的吗?
我们可以决定将lead从redux存储中取出,或者放在一个单独的存储中,这样就不会有那么多的状态对象和所有这些lead对象。
对任何人的观点或整合都非常感兴趣。
干杯
发布于 2017-03-10 01:32:55
不是的。Redux不会在生产环境的内存中保留以前的状态树。有关更多信息,请参阅我在Is there any way to "commit" the state in Redux to free memory?上的评论,以及Can a Redux store lead to a memory leak?和Redux and ALL the application state上类似的相关答案。
https://stackoverflow.com/questions/42686735
复制相似问题