Vue: احتمال تسرب الذاكرة عند v-for في وضع التطوير

تم إنشاؤها على ١٧ يوليو ٢٠١٨  ·  3تعليقات  ·  مصدر: vuejs/vue

إصدار

2.5.16

رابط الاستنساخ

https://codepen.io/anon/pen/KBMaOY

خطوات التكاثر

  • افتح ملف الكود https://codepen.io/anon/pen/gjMgzG
  • انقر مرتين لإدراج 0 عنصر ، ثم 1000
  • رؤية زيادة الذاكرة
  • جرب فرض GC (رمز سلة المهملات) قبل قياسه
  • خذ لقطات كومة في علامة تبويب "الذاكرة" في Chrome
  • شاهد استخدام الذاكرة في مدير مهام Chome (shift esc)
  • شاهد استخدام الذاكرة في إدارة مهام نظام التشغيل

ما هو متوقع؟

نفس استخدام الذاكرة بعد جامع القمامة

ما الذي يحدث بالفعل؟

على الرغم من أن علامة التبويب "الأداء" تعرض نفس استخدام الذاكرة ، فإن لقطة الكومة "الذاكرة" تعرض زيادة في الذاكرة.
أيضًا ، يعرض كل من مديري مهام Chrome و OS زيادة الذاكرة فقط.


يزداد الأمر سوءًا عندما:

  • استخدام Vuei18n (حتى بدون ترجمة)
  • وجود مكونات الأطفال الكبار

اختبارها على:

  • Windows 7 64 بت
  • Chrome 67.0.3396.99 64 بت

من فضلك ، ضع في اعتبارك أن:

  • قد أكون أفعل شيئًا خاطئًا
  • يمكن أن تكون مشكلة في Chrome
  • يمكن أن تكون مشكلة في نظام التشغيل
improvement

التعليق الأكثر فائدة

لدي نفس المشكلة ، أي تقدم حول هذا؟

ال 3 كومينتر

يبدو أن هناك تسرب في الوضع غير الإنتاجي فقط. يجب أن تكون بخير في الإنتاج

شكرا للعودة posva .

لقد أنشأت أيضًا مشكلة في vue-i18n ، نظرًا لأن استخدام الذاكرة يصبح ثقيلًا جدًا عند استخدامه.
أنا أستخدم vue-virtual-scroller أيضًا ، والتي تدمر وتنشئ الكثير للمكونات عند ترقيم الصفحات أو تمرير الصفحة.

لا أعرف إلى أي مدى يمكن أن ترتبط هذه الحزم ، لكن هاتين الحزمتين مع بعض بنية المكونات المعقدة أو الأعمق تستهلك الكثير من استخدام الذاكرة حتى في وضع الإنتاج.

بالنظر إلى مدير مهام Google ، تزداد علامة تبويب التطبيق بمقدار 2.400 ألف لكل عنصر أقوم بالتمرير لأسفل / لأعلى (يتم إتلاف / إنشاء كل عنصر في العمليات).
في أقل من دقيقة من التمرير لأعلى ولأسفل ، أحصل على استخدام ذاكرة 1 جيجابايت تقريبًا أو وضع الإنتاج أو أدوات المطور مغلقة أو بعد GC. ولا ينزل كثيرًا بعد الطريق.

لست معتادًا على الكود الأساسي لـ vue أو vue-i18n ، ولكن يبدو أنه يتم نسخ بنية المكونات المثبتة لكل مكون متداخل في التطبيق ، ولا يمكن لـ GC تنظيف ذلك بعد تدمير تلك المكونات المتداخلة. يمكن أن تكون هذه هي الطريقة التي تثبت بها vue-i18n نفسها ، لا أعرف حقًا. البيانات أدناه هي ما يجعلني أفكر في ذلك:

image

لدي نفس المشكلة ، أي تقدم حول هذا؟

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات