使用 ngOnChanges 挂钩的内存泄漏
Memory leak using ngOnChanges hook
我在使用 ngOnChanges
挂钩访问子组件中输入 属性 的更改时遇到内存泄漏问题。
我从我的父组件发送大量数据(一个包含 27000 个项目的数组),并且数组中的数据以至少 30hz 的频率变化。
我认为垃圾收集器没有以与上述相同的频率删除 changes: SimpleChanges
对象中 previousValue
的引用。是否有一种手动方法可以处理对象中的数据,或者是否有一种更有效的方法来访问输入 属性 上的更改,而不是挂钩?如果这不是内存泄漏的根本原因,请纠正我?如果需要,我可以分享我的代码。
无法从您的问题的详细信息中得知 ngOnChanges
是否导致内存泄漏 - 如果它是 Angular 的最新版本,我想这不太可能
作为一种排除方法,您可以使用 属性 访问器和 @Input
而不是 ngOnChanges
private _data: any[];
@Input() set data(value: any[]) {
this._data = value;
this.runUpdates();
}
get data(): any[] {
// other logic
return this._data;
}
使用上述方法时,请确保通过输入绑定传入一个新数组,即 setter 不会通过数组突变触发
在处理完旧数据后,我能够通过立即处理旧数组引用来解决问题
我在使用 ngOnChanges
挂钩访问子组件中输入 属性 的更改时遇到内存泄漏问题。
我从我的父组件发送大量数据(一个包含 27000 个项目的数组),并且数组中的数据以至少 30hz 的频率变化。
我认为垃圾收集器没有以与上述相同的频率删除 changes: SimpleChanges
对象中 previousValue
的引用。是否有一种手动方法可以处理对象中的数据,或者是否有一种更有效的方法来访问输入 属性 上的更改,而不是挂钩?如果这不是内存泄漏的根本原因,请纠正我?如果需要,我可以分享我的代码。
无法从您的问题的详细信息中得知 ngOnChanges
是否导致内存泄漏 - 如果它是 Angular 的最新版本,我想这不太可能
作为一种排除方法,您可以使用 属性 访问器和 @Input
而不是 ngOnChanges
private _data: any[];
@Input() set data(value: any[]) {
this._data = value;
this.runUpdates();
}
get data(): any[] {
// other logic
return this._data;
}
使用上述方法时,请确保通过输入绑定传入一个新数组,即 setter 不会通过数组突变触发
在处理完旧数据后,我能够通过立即处理旧数组引用来解决问题