AngularFireAuthModule
From kullanmanın '@angular/fire/auth';
tarayıcıyı 20 saat sonra çökerten bir bellek sızıntısına neden olduğunu buldum .
Sürüm:
Tüm paketler için ncu -u kullanarak bugün güncellenen en son sürümü kullanıyorum.
Açısal Ateş: "@angular/fire": "^5.2.3",
Firebase versiyon: "firebase": "^7.5.0"
,
Nasıl çoğaltılır:
StackBliztz editöründe minimum tekrarlanabilir kod yaptım
İşte doğrudan hata test etmek için bağlantı StackBlizt testi
Belirti:
Kodun hiçbir şey yapmadığını kendiniz kontrol edebilirsiniz. Sadece merhaba dünyayı basar. Ancak, Açısal Uygulama tarafından kullanılan JavaScript belleği 11 kb / s (Chrome Görev Yöneticisi CRTL + ESC) artar . Tarayıcıyı açık bıraktıktan 10 saat sonra, kullanılan bellek yaklaşık 800 mb'ye ulaşır (bellek alanı yaklaşık 1,6 Gb'dir !)
Sonuç olarak, tarayıcıda bellek kalmaz ve krom sekmesi kilitlenir.
Performans sekmesi altında kromun bellek profilini kullanarak daha fazla araştırma yaptıktan sonra, dinleyicilerin sayısının saniyede 2 oranında arttığını ve JS yığınının buna göre arttığını açıkça fark ettim.
Bellek sızıntısına neden olan kod:
AngularFireAuthModule
Modülün kullanılmasının, ister bir kurucuya, ister component
a service
.
import { Component } from '@angular/core';
import {AngularFireAuth} from '@angular/fire/auth';
import {AngularFirestore} from '@angular/fire/firestore';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'memoryleak';
constructor(public auth: AngularFireAuth){
}
}
Soru :
FirebaseAuth uygulamasında bir hata olabilir ve zaten bir Github sorunu açıyorum, ancak bu sorun için bir geçici çözüm arıyorum . Bir çözüm için umutsuzum. Sekmelerdeki oturumlar senkronize olmasa bile umrumda değil. Bu özelliğe ihtiyacım yok. Bir yerde okudum ki
bu işlevselliğe ihtiyacınız yoksa, Firebase V6 modülerleştirme çabaları, sekmelerdeki değişiklikleri algılamak için depolama olayları olan localStorage'a geçmenize ve muhtemelen kendi depolama arayüzünüzü tanımlamanıza olanak tanır.
Tek çözüm buysa, bunu nasıl uygulayabilirim?
Bilgisayarı yavaşlatıp uygulamamı çöktüğü için dinleyicinin bu gereksiz artışını durduran herhangi bir çözüme ihtiyacım var. Uygulamamın 20 saatten fazla çalışması gerekiyor, bu yüzden şimdi bu sorun nedeniyle kullanılamıyor. Bir çözüm için umutsuzum.