I'm making a desktop application in java and am doing some memory optimisations. That made me come across two threads running in the JVM, both named:
RMI TCP connection
And they're both contributing to heap growth quite considerably (at my perspective)
Now I don't know much, but TCP sounds to me like it's some internet thing. From what I've managed to find on google, it has something to do with serialization/deserialization over the internet.
But my application doesn't need the internet, so I would like to know two things:
My tool has been "Java visualVM". A though has crossed my mind that the two threads are spawned as a result of using this tool, in which case I'll feel a bit stupid.
The threads are used to feed a remote JMX client (in your case Java VisualVM) with data from your JVM.
Once you disconnect the threads should not allocate so much data anymore.
To verify this you can go to the Threads tab and look at the thread dump of a RMI TCP Connection thread. You should see that the RMI operations trigger JMX beans.