我正在编写一个应该运行许多小时(10-100)的应用程序,我正在使用JMX进行监控。
然而,过了一段时间,我发现了两件事:
com.sun.jmx.remote.internal.ArrayNotificationBuffer#1
变得更大:20小时后,大约10MB - 当我启动时,它小于1 MB RMI TCP Accept-0
(或任何其他数字)和RMI-TCP-Connection(44)-[IP]
等更多线程会随着时间的推移而变形。我在想,它与应用程序的不同连接有关,但目前我只连接一次,但有些连接似乎仍然是开放的。
怎么会这样?我该如何解决这个问题?
答案 0 :(得分:1)
我在ArrayNotificationBuffer的源代码注释中徘徊,并且它有大量的JMX跟踪日志记录,因此您可能希望enable JMX tracing更好地了解正在发生的事情。< / p>
您可能会发现this known bug正在影响您。错误报告表明在长期连接上观察到问题。提到了一些解决方法,尽管对于您来说更简单的解决方法是定期断开连接并重新连接。好消息是Java7中似乎有patch,但我不确定它是否已经发布了。
我还要确保如果您正在注册JMX通知监听器,那么他们会不断地及时处理通知。如果不这样做也可能导致此症状。