আমি দেখেছি যে ব্যবহার AngularFireAuthModule
থেকে '@angular/fire/auth';
একটি মেমরি লিক যে 20 ঘণ্টা পর ব্রাউজার ক্র্যাশ কারণ।
সংস্করণ:
আমি সমস্ত প্যাকেজগুলির জন্য ncu -u ব্যবহার করে আজ আপডেট হওয়া সর্বশেষতম সংস্করণটি ব্যবহার করছি।
কৌণিক আগুন: "@angular/fire": "^5.2.3",
Firebase সংস্করণ: "firebase": "^7.5.0"
,
কিভাবে পুনরুত্পাদন করবেন:
আমি স্ট্যাকব্লিজটিজ সম্পাদকটিতে ন্যূনতম পুনরুত্পাদনযোগ্য কোড তৈরি করেছিলাম
এখানে সরাসরি বাগ স্ট্যাকব্লিজ্ট পরীক্ষার জন্য লিঙ্কটি দেওয়া আছে
উপসর্গ:
কোডটি কিছুই করে না তা আপনি নিজেরাই পরীক্ষা করতে পারেন। এটি কেবল হ্যালো ওয়ার্ল্ড প্রিন্ট করে। তবে, কৌণিক অ্যাপ্লিকেশন দ্বারা ব্যবহৃত জাভাস্ক্রিপ্ট মেমরি 11 কেবি / সেকেন্ড বৃদ্ধি পেয়েছে (ক্রোম টাস্ক ম্যানেজার সিআরটিএল + ইসএসসি)। ব্রাউজারটি খোলা রেখে 10 ঘন্টা রাখার পরে, ব্যবহৃত মেমরিটি প্রায় 800 এমবিতে পৌঁছায় ( মেমরিটির পদচিহ্ন প্রায় 1.6 গিগাবাইটের দ্বিগুণ !)
ফলস্বরূপ, ব্রাউজারটি মেমরির বাইরে চলে যায় এবং ক্রোম ট্যাব ক্র্যাশ হয়।
পারফরম্যান্স ট্যাবের অধীনে ক্রোমের মেমোরি প্রোফাইলিং ব্যবহার করে আরও তদন্ত করার পরে, আমি স্পষ্টভাবে লক্ষ্য করেছি যে শ্রোতার সংখ্যা প্রতি সেকেন্ডে 2 বৃদ্ধি পায় এবং সেই অনুযায়ী জেএস হিপ বৃদ্ধি পায়।
কোড যা মেমরি ফুটোয়ের কারণ:
আমি দেখতে পেলাম যে 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){
}
}
প্রশ্ন :
এটি ফায়ারবেসআউথের বাস্তবায়নে একটি ত্রুটি হতে পারে এবং আমি ইতিমধ্যে একটি গিথুব ইস্যুটি খোলাম, তবে আমি এই ইস্যুটির জন্য কোনও কর্মপদ্ধতি খুঁজছি । আমি একটি সমাধান জন্য মরিয়া। ট্যাবগুলিতে সেশনগুলি সিঙ্ক্রোনাইজ না করা হলেও আমি কিছু মনে করি না। আমার সেই বৈশিষ্ট্যটির দরকার নেই। আমি যে কোথাও পড়েছি
যদি আপনার এই কার্যকারিতাটির প্রয়োজন না হয় তবে ফায়ারবেস ভি 6 মডুলারাইজেশন প্রচেষ্টা আপনাকে লোকালস্টোরারে স্যুইচ করার অনুমতি দেবে যা ক্রস ট্যাবগুলি সনাক্ত করার জন্য স্টোরেজ ইভেন্টগুলি রয়েছে এবং সম্ভবত আপনার নিজের স্টোরেজ ইন্টারফেসটি সংজ্ঞায়নের দক্ষতা সরবরাহ করবে।
যদি এটিই একমাত্র সমাধান হয় তবে কীভাবে এটি বাস্তবায়ন করা যায়?
আমার কেবলমাত্র এমন কোনও সমাধানের প্রয়োজন যা শ্রোতার এই অপ্রয়োজনীয় বৃদ্ধি থামিয়ে দেয় কারণ এটি কম্পিউটারকে ধীর করে দেয় এবং আমার অ্যাপ্লিকেশনটিকে ক্র্যাশ করে। আমার অ্যাপ্লিকেশনটি 20 ঘন্টারও বেশি সময় চালানো দরকার তাই এই সমস্যার কারণে এটি এখন ব্যবহারের অযোগ্য। আমি একটি সমাধান জন্য মরিয়া।