什么是RMI TCP连接

我正在用java制作一个桌面应用程序,并正在做一些内存优化。这让我遇到了两个在JVM中运行的线程,它们都被命名为:

RMI TCP 连接

而且它们都对堆增长做出了相当大的贡献(在我看来)

现在我不太了解,但TCP对我来说听起来像是互联网的东西。从我在谷歌上找到的内容来看,它与互联网上的序列化/反序列化有关。

但是我的应用程序不需要互联网,所以我想知道两件事:

  1. 他们在我的JVM中做了什么,他们在做什么?
  2. 我能以某种方式摆脱它们吗?

enter image description here

我的工具是“Java visualVM”。虽然我突然想到,由于使用此工具,这两个线程是生成的,在这种情况下,我会觉得有点愚蠢。


答案 1

这些线程用于向远程 JMX 客户机(在本例中为 Java VisualVM)提供来自 JVM 的数据。

断开连接后,线程就不应该再分配这么多数据了。

要验证这一点,您可以转到“线程”选项卡并查看 RMI TCP 连接线程的线程转储。您应该看到 RMI 操作触发了 JMX Bean。


答案 2

RMI 是一个 Java API,它允许您在多台计算机上划分同一应用程序的各个部分的实现。你在项目中使用java.rmi库吗?


推荐