ฉันพบว่าการใช้AngularFireAuthModule
จาก '@angular/fire/auth';
ทำให้หน่วยความจำรั่วซึ่งเกิดปัญหากับเบราว์เซอร์หลังจาก 20 ชั่วโมง
เวอร์ชัน:
ฉันใช้เวอร์ชั่นล่าสุดที่อัพเดทวันนี้โดยใช้ ncu -u สำหรับแพ็คเกจทั้งหมด
ไฟเชิงมุม: "@angular/fire": "^5.2.3",
รุ่น Firebase: "firebase": "^7.5.0"
,
วิธีการทำซ้ำ:
ฉันทำรหัสขั้นต่ำที่ทำซ้ำได้บนตัวแก้ไข StackBliztz
นี่คือลิงค์สำหรับทดสอบข้อบกพร่องโดยตรงทดสอบ StackBlizt
อาการ:
คุณสามารถตรวจสอบตัวเองว่ารหัสไม่ทำอะไรเลย มันพิมพ์สวัสดีชาวโลก อย่างไรก็ตามหน่วยความจำ JavaScript ที่แอปเชิงมุมใช้เพิ่มขึ้น11 kb / s (Chrome Task Manager CRTL + ESC) หลังจากเปิดเบราว์เซอร์ทิ้งไว้ 10 ชั่วโมงหน่วยความจำที่ใช้จะอยู่ที่ประมาณ800 mb (ขนาดหน่วยความจำประมาณ1.6 Gb !)
เป็นผลให้เบราว์เซอร์มีหน่วยความจำไม่เพียงพอและแท็บ Chrome ขัดข้อง
หลังจากการตรวจสอบเพิ่มเติมโดยใช้การทำโปรไฟล์หน่วยความจำของ chrome ภายใต้แท็บประสิทธิภาพการทำงานฉันสังเกตเห็นได้อย่างชัดเจนว่าจำนวนผู้ฟังเพิ่มขึ้น 2 ทุก ๆ วินาทีดังนั้น JS ฮีปจึงเพิ่มขึ้นตามลำดับ
รหัสที่ทำให้หน่วยความจำรั่ว:
ผมพบว่าการใช้AngularFireAuthModule
โมดูลทำให้เกิดการรั่วไหลของหน่วยความจำไม่ว่าจะถูกฉีดในตัวสร้างหรือในcomponent
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){
}
}
คำถาม :
อาจเป็นข้อผิดพลาดในการใช้งาน FirebaseAuth และฉันเปิดปัญหา Github แล้ว แต่ฉันกำลังมองหาวิธีแก้ปัญหาสำหรับปัญหานี้ ฉันหมดหวังที่จะได้ทางออก ฉันไม่รังเกียจแม้ว่าการประชุมในแท็บจะไม่ซิงโครไนซ์ ฉันไม่ต้องการคุณสมบัตินั้น ฉันอ่านบางที่
หากคุณไม่ต้องการฟังก์ชั่นนี้ความพยายามในการทำให้เป็นมาตรฐานของ Firebase V6 จะช่วยให้คุณสามารถเปลี่ยนไปใช้ localStorage ซึ่งมีกิจกรรมหน่วยเก็บข้อมูลสำหรับตรวจจับการเปลี่ยนแปลงข้ามแท็บและอาจช่วยให้คุณสามารถกำหนดส่วนต่อประสานการจัดเก็บข้อมูลของคุณ
หากนั่นเป็นทางออกเดียวที่จะนำไปใช้อย่างไร
ฉันต้องการโซลูชันใด ๆ ที่หยุดการเพิ่มผู้ฟังที่ไม่จำเป็นเนื่องจากมันทำให้คอมพิวเตอร์ทำงานช้าลงและทำให้แอปของฉันทำงานล้มเหลว แอพของฉันต้องทำงานมากกว่า 20 ชั่วโมงดังนั้นจึงไม่สามารถใช้งานได้เนื่องจากปัญหานี้ ฉันหมดหวังที่จะได้ทางออก