使用 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 不会通过数组突变触发

在处理完旧数据后,我能够通过立即处理旧数组引用来解决问题