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