PERF: يبدو أن هناك تسرب للذاكرة في frontend-store

يبدو أن هناك تسربًا للذاكرة في ملف store.js، فعندما يتنقل المستخدمون بين مواضيع مختلفة، يبدو أن _identityMap ينمو بسرعة مع كل طلب RESTful. بدون منطق تنظيف مناسب، ستستنفد الخريطة الذاكرة مع أكوام JavaScript الكبيرة.

ربما يكون إضافة دالة pruneMap إلى store.js، باستخدام خوارزمية FIFO لإزالة أقدم الخرائط، كافيًا؟

أيضًا، يمكن مناقشة المتغير const MAX_ITEMS_PER_TYPE = 500; بشكل أكبر لتحقيق توازن بين التخزين المؤقت وتخزين الذاكرة.

3 إعجابات

هل يمكنك إخبارنا المزيد عن ذلك؟

هل لديك أي بيانات تدعم هذا الادعاء؟

خطوات إعادة الإنتاج هي كما يلي: ينتقل المستخدم من موضوع إلى آخر باستخدام “مقترح/ذو صلة” تحت الموضوع عدة مرات دون تحديث الصفحة، وسيزداد حجم كومة جافاسكريبت (js heap size) من 100 ميجابايت الأصلية إلى حوالي 500 ميجابايت في اختباري، إذا كانت الموضوعات التي تمت زيارتها كافية (خاصة للموضوعات التي تحتوي على العديد من المشاركات تحتها). والعودة إلى الصفحة الرئيسية لن تحرر جزء الذاكرة المشغول هذا.

يمكن رؤية حجم كومة جافاسكريبت هذا من وحدة تحكم المتصفح - الأداء، ويمكن رؤية استهلاك الذاكرة من مدير العمليات في المتصفح.

لقد قمت بتحميل مقطع فيديو لهذا مرفق في طلب السحب (PR)، يعرض المشكلة فقط (حوالي 3 دقائق، وعند استخدام نفس الصفحة لساعات أطول، ستصبح الحالة أسوأ).

وكذلك إضافة نقطة توقف هنا ستوضح الكمية المتزايدة من العناصر في _identityMap.

لكنني لست متأكدًا تمامًا مما إذا كان _identityMap هو ما تسبب في هذه المشكلة، أقدم فقط بعض المعلومات للتحقيق.

إعجابَين (2)

طلب السحب أعلاه سيعالج تسرب الذاكرة الذي تم الإبلاغ عنه في المشاركة الأصلية. :smiley:

6 إعجابات