我正在用java做一个桌面应用程序,并做了一些内存优化。这让我遇到了在JVM中运行的两个线程,它们的名字都是:
RMI TCP连接
而且它们都对堆的增长做出了相当大的贡献(在我看来)
现在我知道的不多,但TCP听起来像是互联网上的东西。从我在google上找到的东西来看,它与互联网上的序列化/反序列化有关。
但我的应用程序不需要互联网,所以我想知道两件事:
1.它们在我的JVM中是什么,它们在做什么?
1.我能以某种方式摆脱他们吗?
我的工具是“Java visualVM”。我的脑海中闪过一个想法,这两个线程是由于使用这个工具而产生的,在这种情况下,我会觉得有点愚蠢。
3条答案
按热度按时间du7egjpx1#
这些线程用于向远程JMX客户机(在本例中为JavaVisualVM)提供JVM中的数据。
一旦断开连接,线程就不应该再分配这么多数据。
要验证这一点,您可以转到Threads选项卡并查看RMI TCP Connection线程的线程转储。您应该看到RMI操作触发了JMXbean。
mf98qq942#
RMI是一个Java API,它允许您在多台计算机上划分同一应用程序的部分实现。你在你的项目中使用java.rmi库吗?
7kjnsjlb3#
RMI TCP连接处理对象的序列化和反序列化、方法调用请求以及客户端和服务器之间的响应。它提供了一种透明的远程方法调用机制,允许远程访问和操作Java对象。
它负责建立和管理网络连接,从客户端向服务器发送请求,以及接收和处理来自服务器的响应。