【发布时间】:2012-08-09 12:47:09
【问题描述】:
我正在编写一个应该运行多个小时 (10-100) 的应用程序,我正在使用 JMX 进行监控。
然而,一段时间后,我发现了两件事:
-
com.sun.jmx.remote.internal.ArrayNotificationBuffer#1变大:20 小时后,大约 10MB - 当我启动它时,它小于 1MB - 随着时间的推移会实例化更多线程,例如
RMI TCP Accept-0(或任何其他数字)和RMI-TCP-Connection(44)-[IP]。
我在想,这与应用程序的不同连接有关,但目前我只连接了一次,但某些连接似乎仍处于打开状态。
怎么可能?我该如何解决这个问题?
【问题讨论】:
-
我不会长时间使用 RMI + JMX 来监控应用程序。它可以产生相当多的垃圾。我会使用一个简单的日志文件和/或套接字,它只发布您需要的信息。
-
为什么要重新发明轮子?我想要内存和 CPU 使用情况统计信息。我不明白为什么我应该完全自己写它
-
你不需要重新发明轮子,除非它总是对你不利。 ;)
标签: java memory-leaks rmi jmx