具有大数据收集,内存问题的ngredux状态

时间:2017-03-09 04:27:39

标签: angularjs redux

我们正在为Angular应用程序实现ngRedux。这一切都运行得很好,但我关注的是:内存使用情况,尤其是移动设备。

我们的商店状态对象如下所示:

{
  leads : [],
  filters: [],
  applictionStatuses: [],
}

让我们的用户说一下,我们的用户会在潜在客户列表中选择一个日期过滤器,这将从我们的API获取30.000个潜在客户(例如整整一年)。

据我了解redux,将克隆状态对象,然后下一个对象看起来像

{
  leads : [ {object}, {object} ...],
  filters: [ dateRange: { start: {date}, end: {end} }],
  applictionStatuses: [],
}

当前状态下的潜在客户对象将保留30.000条记录。 否,当用户更改日期过滤器时,它将更新状态并使用新的日期过滤器创建新状态。它将获取更多或更少的记录,并将其转化为潜在客户。

理论上,状态对象看起来像:

{
   leads : [ {object} ... times 40.000 ],
   filters: [ dateRange: { start: {date}, end: {end} } ],
   applictionStatuses: [],
}

这不意味着此时,在内存中将存储3个状态,总共有0 + 30.000 + 40.000个引脚= 70,000个内存中的引线。 状态的任何进一步变化都会重复国家和潜在客户。

只有在我提交并压制状态之前,我才会占据大量记忆以获取潜在客户记录。

我的推理是否存在错误,或者这是redux不可避免的事情?

我们可以决定将Leads从redux商店中取出或者放在一个单独的商店中,这样就没有那么多的状态对象和所有这些主要对象。

对任何人的意见或合并非常感兴趣。

干杯

1 个答案:

答案 0 :(得分:1)

没有。 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上的类似相关答案。