Jelaskan bugnya
Saat instance ServiceBusReceiverAsyncClient
dibuat, dua bidang instance LockContainer
dibuat.
Setiap variabel (dalam konstruktor LockContainer
) berlangganan Flux untuk membersihkan sumber daya secara berkala. Lambda yang digunakan dalam pembersihan menggunakan instance wadah kunci itu sendiri, jadi Flux akan terus merujuk instance wadah kunci sampai konsumen dibuang.
Masalahnya adalah ketika ServiceBusReceiverAsyncClient
ditutup, variabel LockContainer
juga tidak ditutup, yang menyebabkan kebocoran memori.
Untuk Mereproduksi
Untuk mereproduksi, buat instance ServiceBusReceiverAsyncClient
dan panggil berulang kali close
dan start
. Gunakan Visual VM untuk melacak penggunaan memori dengan heap dump.
Ini adalah pola penggunaan memori yang harus Anda lihat (sedikit peningkatan namun stabil dalam penggunaan memori):
Dan beginilah tampilan jumlah instance di heap dan ukuran yang dipertahankan pada waktunya:
Perilaku yang diharapkan
Instans LockContainer harus ditutup saat klien ditutup dan karena itu tidak bocor ke memori.
Setup (harap lengkapi informasi berikut):
Daftar Periksa Informasi
Mohon pastikan bahwa Anda telah menambahkan semua informasi berikut di atas dan centang bidang yang diperlukan jika tidak, kami akan memperlakukan penerbit sebagai laporan yang tidak lengkap
Halo, saya baru saja membuka PR dengan perbaikan untuk masalah ini: https://github.com/Azure/azure-sdk-for-Java/pull/17993.
Beri tahu saya jika Anda memerlukan perubahan atau informasi lebih lanjut.
Salam!
Terima kasih telah memeriksa PR @conniey ! Bisakah kita mengharapkan rilis baru segera? Salam!
@marciopd kami akan merilisnya di bulan Januari.
Diperbaiki oleh #17993