enn*_*oid 1 javascript memory garbage-collection angular
我尝试了解 GabageCollector 在组件被破坏后如何工作。我有以下案例:
应用程序组件:
export class AppComponent {
testCompoments = [1,2];
removeOne(id){
this.testCompoments.pop()
}
nop(){
}
}
Run Code Online (Sandbox Code Playgroud)
应用程序HTML:
<ng-container *ngFor="let t of testCompoments">
<app-test [id]="t" (close)="removeOne($event)"></app-test>
</ng-container>
<br>
Run Code Online (Sandbox Code Playgroud)
空 FN
测试组件:
export class TestComponent implements OnInit {
@Output()
public close = new EventEmitter()
@Input()
id;
constructor() { }
ngOnInit() {
}
closeClick(){
this.close.emit(this.id)
}
}
Run Code Online (Sandbox Code Playgroud)
测试HTML:
<p>{{id}}</p>
<button (click)="closeClick()">close</button>
Run Code Online (Sandbox Code Playgroud)
现在,当我启动应用程序并拍摄堆快照时,我会看到内存中正确数量的对象:
让我惊讶的是,居然还有两个物体?现在另外奇怪的是,如果我单击“EMPTY FN”按钮,它什么也不做(应用程序组件上的空功能),下一个快照如下所示:
我对这个话题有几个问题:
Chrome 似乎在内存中为 ngFor 保留了一个实例。内存泄漏并不像看起来那么严重。
https://angular-garbage-collection-components.stackblitz.io/
通过比较 Chrome 上的快照:
参考代码: https: //stackblitz.com/edit/angular-garbage-collection-components
归档时间: |
|
查看次数: |
5672 次 |
最近记录: |