Azure-sdk-for-java: [BUG] تسرب الذاكرة في إغلاق ServiceBusReceiverAsyncClient

تم إنشاؤها على ٦ ديسمبر ٢٠٢٠  ·  3تعليقات  ·  مصدر: Azure/azure-sdk-for-java

صف الخلل
عند إنشاء مثيل لـ ServiceBusReceiverAsyncClient يتم إنشاء حقلي مثيل LockContainer .

كل متغير (في مُنشئ LockContainer ) يشترك في Flux من أجل تنظيف الموارد بشكل دوري. تستخدم lambda في عملية التنظيف مثيل حاوية القفل نفسها ، لذلك سيواصل Flux الرجوع إلى مثيل حاوية القفل حتى يتم التخلص من المستهلك.

المسألة هي أنه عندما ServiceBusReceiverAsyncClient مغلق، و LockContainer لا يتم أغلق المتغيرات أيضا، والذي يسبب تسرب الذاكرة.

لإعادة إنتاج
من أجل إعادة إنشاء مثيل ServiceBusReceiverAsyncClient واستدعاء close و start بشكل متكرر. استخدم Visual VM لتتبع استخدام الذاكرة مع عمليات تفريغ الكومة.

هذا هو نمط استخدام الذاكرة الذي يجب أن تراه (زيادة طفيفة ولكن ثابتة في استخدام الذاكرة):
Screenshot 2020-12-05 at 23 53 01

وهذه هي الطريقة التي سيبدو بها عدد المثيلات في الكومة وأحجامها المحتجزة بمرور الوقت:
Screenshot 2020-12-05 at 23 55 07
Screenshot 2020-12-05 at 23 56 24

سلوك متوقع
يجب إغلاق مثيلات LockContainer عندما يكون العميل مغلقًا وبالتالي لا تتسرب إلى الذاكرة.

الإعداد (يرجى استكمال المعلومات التالية):

  • نظام التشغيل: Mac / Linux
  • IDE: IntelliJ
  • 7.0.0

قائمة التحقق من المعلومات
يرجى التأكد من أنك قد أضفت جميع المعلومات التالية أعلاه وتحقق من الحقول المطلوبة وإلا فسوف نتعامل مع المُصدر على أنه تقرير غير مكتمل

  • [X] تمت إضافة وصف الخطأ
  • [X] خطوات Repro المضافة
  • [X] معلومات الإعداد المضافة
Client Service Bus customer-reported question

ال 3 كومينتر

مرحبًا ، لقد فتحت للتو علاقات عامة مع إصلاح لهذه المشكلة: https://github.com/Azure/azure-sdk-for-java/pull/17993.

يرجى إعلامي إذا كنت بحاجة إلى أي تغييرات أو مزيد من المعلومات.

تحياتي الحارة!

شكرا للتحقق من العلاقات العامة conniey ! هل يمكننا توقع إصدار جديد قريبًا؟ تحياتي الحارة!

marciopd سيكون لدينا إصدار في يناير.

تم الإصلاح بواسطة # 17993

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