在我们的应用程序中,远程过程调用是通过自己的基于netty的命令调度程序系统解决的。我们有很多模块(大约20个),我想在单独的jvm-s中运行所有模块。我的问题是,RMI为每个JVM产生大约17个线程。我根本不需要RMI(据我所知)。
我可以完全禁用jvm的RMI吗?或者至少以不使用这么多线程的方式配置它?
答案 0 :(得分:5)
您最有可能使用监控应用程序查看JVM,对吧?好吧:这些监控应用程序使用 RMI。因此,您将在监视应用程序,分析器等中始终看到RMI线程。您将始终使用一定的CPU时间来查看它们。就像收集分析信息在没有将这些信息(通过RMI)传输到您的工具时不起作用一样。您可以实现自己的传输协议并指示管理bean使用它,但我怀疑您是否可以节省足够的资源来返回开发成本。
如果您不使用任何RMI,RMI将不会启动任何线程。但是如果您正在使用它,即使您没有意识到这一点,禁用RMI意味着您的软件将不再起作用。
答案 1 :(得分:3)
StuartMarks is correct。在您使用它之前,RMI不会启动任何线程。
您可能以某种不知情的方式使用它,例如JMX?