JMX RMI - 内存泄漏 - ArrayNotificationBuffer随着时间的推移变得越来越大

时间:2012-08-09 12:47:09

标签: java memory-leaks rmi jmx

我正在编写一个应该运行许多小时(10-100)的应用程序,我正在使用JMX进行监控。

然而,过了一段时间,我发现了两件事:

  • com.sun.jmx.remote.internal.ArrayNotificationBuffer#1变得更大:20小时后,大约10MB - 当我启动时,它小于1 MB
  • RMI TCP Accept-0(或任何其他数字)和RMI-TCP-Connection(44)-[IP]等更多线程会随着时间的推移而变形。

我在想,它与应用程序的不同连接有关,但目前我只连接一次,但有些连接似乎仍然是开放的。

怎么会这样?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

我在ArrayNotificationBuffer的源代码注释中徘徊,并且它有大量的JMX跟踪日志记录,因此您可能希望enable JMX tracing更好地了解正在发生的事情。< / p>

您可能会发现this known bug正在影响您。错误报告表明在长期连接上观察到问题。提到了一些解决方法,尽管对于您来说更简单的解决方法是定期断开连接并重新连接。好消息是Java7中似乎有patch,但我不确定它是否已经发布了。

我还要确保如果您正在注册JMX通知监听器,那么他们会不断地及时处理通知。如果不这样做也可能导致此症状。