有没有办法在java应用程序中完全禁用RMI?

在我们的应用程序中,远程过程调用是通过自己的基于netty的命令调度程序系统解决的。 我们有很多模块(大约20个),我想在单独的jvm-s中运行所有模块。 我的问题是,RMI为每个JVM产生大约17个线程。 我根本不需要RMI(据我所知)。

我可以完全禁用jvm的RMI吗? 或者至少以不使用这么multithreading的方式配置它?

StuartMarks是对的 。 在您使用它之前,RMI不会启动任何线程。

可能你正在以某种方式使用它,例如JMX?

您最有可能使用监控应用程序查看JVM,对吧? 那么:这些监控应用程序使用 RMI。 因此,您将在监视应用程序,分析器等中始终看到RMI线程。您将始终使用一定的CPU时间来查看它们。 就像收集分析信息不起作用而不将这些信息(通过RMI)传输到您的工具一样。 您可以实现自己的传输协议并指示管理bean使用它,但我怀疑您是否可以节省足够的资源来返回开发成本。

如果您不使用任何RMI,RMI将不会启动任何线程。 但是如果您正在使用它,即使您没有意识到这一点,禁用RMI意味着您的软件将不再起作用。