【发布时间】:2018-04-08 22:32:18
【问题描述】:
据我所知,store 是一个状态列表,每个状态都可以直接访问其上一个或下一个状态。如果我有大量数据并且每个状态都太大而无法保存在每个状态中,则此列表保存在应用程序内存中。如何永久删除旧的存储对象以避免内存过剩?
此时我的代码如下所示:
export const REDUCERS = {
login: loginReducer,
register: registerReducer,
profile: profileReducer,
company: companyReducer,
balance: balanceReducer
}
const SdkReducer = compose(storeLogger(), combineReducers)(REDUCERS);
export function reducer(state: any, action: any) {
if(action.type === 'RESET_STORE'){
return undefined;
}
return SdkReducer(state, action);
}
当调用“RESET_STORE”时,root reducer 返回“udefined”,但是,据我所知,仍然保存了 store 的旧状态,其中包含旧数据。我想永久删除它。释放一些内存。
【问题讨论】:
-
垃圾收集由网络世界中的浏览器处理。作为 Web 应用程序开发人员,您的工作是确保您不做任何阻止浏览器垃圾收集的事情,例如保留对旧数据的引用,以便您的浏览器无法收集它。在这种情况下,您在某些地方依赖于一个框架来为您执行此操作,您需要希望他们做对了,或者如果您认为他们搞砸了,请查看那里的代码并弄清楚发生了什么。 ngrx 非常好,它们实际上并没有保存所有以前的状态,这是对它的错误描述。
-
再次感谢布莱恩。您的解释帮助我了解如何保存旧状态。