2016-11-24 356 views
9

我正在做一个桌面应用程序在Java中,我正在做一些内存优化。这让我遇到在JVM上运行两个线程,并重命名为:什么是RMI TCP连接

RMI TCP连接

而且他们俩都有助于堆增长颇大(我的观点)

现在我不知道很多,但TCP听起来像是一些互联网的东西。从我在谷歌上找到的东西,它与互联网上的序列化/反序列化有关。

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

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

enter image description here

我的工具一直是 “Java的VisualVM的”。一个虽然已经跨过我的脑海,两个线程是由于使用这个工具的结果,在这种情况下,我会觉得有点愚蠢。

+0

你是对的。它们是由于使用此工具而产生的。 – EJP

+0

太好了,谢谢。正确和愚蠢。如果可以的话,我会将其标记为答案。 – Jake

回答

1

这些线程用于为远程JMX客户端(在您的情况下为Java VisualVM)提供来自JVM的数据。

一旦你断开线程不应该分配这么多的数据了。

为了验证这一点,你可以去线程选项卡,并期待在一个RMI TCP连接线程的线程转储。您应该看到RMI操作触发了JMX bean。

0

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

+0

不,我使用lwjgl 3.0框架。可能是他们这样做。我会检查他们的论坛。 – Jake

+0

在其源代码中找不到任何对RMI的引用 – Jake

+0

在google中,当使用lwjgl库时,我发现了一些关于rmi异常的消息。显然,由于某种原因Java使用rmi连接或类似的东西时,与本地C库一起工作。 – NetL