Java RMI tcp 连接内存问题

Java RMI tcp connect memory issue

我有一个可以在探查器中找到的问题,但我不知道如何解决它。 加载应用程序后,我得到这个锯齿波模式,程序空闲但消耗内存,如您在此处看到的。

当我检查采样器线程内存分配时,我看到 RMI TCP 连接到我的 eth0 (172.16.20.51) 以每秒半兆字节 (413,213) 的速度消耗内存,这导致生产记录 'stop the world' GC :-( 我无法追踪这个问题的原因,因为我不知道它是哪个线程的哪个端口,另一方面我试图 运行 我的罐子 -com.sun.management.jmxremote.authenticate=假 -Dcom.sun.management.jmxremote.ssl=假 标志,但没有帮助。 任何想法将不胜感激。

我知道这是一个旧的 post,但由于我遇到了同样的问题,所以答案可能对其他人也有帮助..

RMI TCP 连接线程是虚拟 VM 对内存使用情况进行采样的方式。因此,高分配 Bytes/sec 是您在分析时期望看到的,并不(必然)表示您的应用程序有任何问题。例如参见 [​​=10=].

关于堆转储,Visual VM 在 Monitor 和 Sampler 选项卡中有一个 'Heap Dump' 按钮,它将保存堆转储文件。例如,您可以将其加载到免费 Eclipse Memory Analyzer (MAT) 以检查内存泄漏等