2016-11-24 353 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