Azure-sdk-for-java: [BUG] ServiceBusReceiverAsyncClient 中的内存泄漏关闭

创建于 2020-12-06  ·  3评论  ·  资料来源: Azure/azure-sdk-for-java

描述错误
创建ServiceBusReceiverAsyncClient的实例时,会创建两个LockContainer实例字段。

每个变量(在LockContainer的构造函数中)订阅 Flux 以定期清理资源。 清理中使用的 lambda 使用锁容器实例本身,因此 Flux 将继续引用锁容器实例,直到消费者被释放。

问题是当ServiceBusReceiverAsyncClient关闭时, LockContainer变量不会也被关闭,这会导致内存泄漏。

再现
为了重现创建ServiceBusReceiverAsyncClient实例并重复调用closestart 。 使用 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] 添加了重现步骤
  • [X] 添加设置信息
Client Service Bus customer-reported question

所有3条评论

你好,我刚刚打开了一个 PR 并修复了这个问题: https :

如果您需要任何更改或更多信息,请告诉我。

此致!

感谢您检查 PR @conniey ! 我们可以期待很快发布新版本吗? 此致!

@marciopd我们将在 1 月发布。

由 #17993 修复

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

srnagar picture srnagar  ·  4评论

valmol picture valmol  ·  4评论

hemanttanwar picture hemanttanwar  ·  3评论

dkirrane picture dkirrane  ·  4评论

christopheranderson picture christopheranderson  ·  3评论