메모리 누출을 막기 위해 구성 요소가 파괴 될 때 Observable (즉, Observable : 무한대 값) 항목을 구독 취소해야한다는 것을 이해합니다. 나는 유한 값 Observables을 완료 할 때 자동으로 수행 할 필요가 없습니다. unsubscribe
.각도 2/Rxjs : 정말로 구독을 취소해야합니까?
그러나 나는 만들 경우 내 구성 요소의Observable
(예 FormGroup.valueChanges
, 또는 QueryList.changes
용),이 하나를 포함하는 구성 요소와 파괴 될 것입니다, 그래서 그들은 더 메모리 누수도 없을 것입니다 생각 무한 내가 이 아니라면을 수신 거부하십시오. 내가하지 unsubscribe
this.form.valueChanges
에서 작업을 수행, 여기
@Component({})
export class DummyComponent {
form: FormGroup;
constructor(private fb: FormBuilder) {
this.form = this.fb.group({
firstName: [''],
lastName: ['']
});
this.form.valueChanges.subscribe(
x => console.log(x)
);
}
}
; 여기
은 간단한 예입니다 내 구성 요소가 파괴되면this.form.valueChanges
도 파괴됩니다. 이 경우 메모리 누수가 발생합니까?
전체 콜백을 구독 (...)하도록 추가하고 구성 요소가 삭제 될 때 호출되는지 확인 했습니까? –
나는 그것을했고, 호출되지 않았다. (나는'this.form.valueChanges'만으로 테스트를했다.) – freedonaab
그렇다면 구독을 취소하는 것이 더 낫지 만 필요하지는 않습니다. 나는 구성 요소가 파괴되었을 때 메모리 누수를 기대하지 않을 것이고, 그것은 쓰레기를 수집 할 것이고, 그걸 가지고 구독 할 것이기 때문이다. 구성 요소 (예 : 서비스) 외부에서 구독을 구독하거나 전달하면 구성 요소가 GCed되는 것을 막을 수 있지만 구성 요소 내에 모두 들어 있으면 해를 입히지 않아야합니다. –