2

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

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

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

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

这个怎么可能?我怎样才能解决这个问题?

4

1 回答 1

1

我在ArrayNotificationBuffer的源代码注释中四处寻找,它具有相当数量的 JMX 跟踪日志记录,因此您可能希望启用 JMX 跟踪以更好地了解正在发生的事情。

您可能会发现这个已知错误正在影响您。错误报告表明在长期连接中观察到该问题。提到了一些解决方法,尽管如果对您实用的话,一个更简单的解决方法不是,即定期断开连接并重新连接。好消息是在 Java7 中似乎有一个补丁,虽然我不确定它是否已经发布了。

我还将确保如果您正在注册 JMX 通知侦听器,它们会持续且及时地处理通知。不这样做也可能导致此症状。

于 2012-08-09T13:23:23.617 回答