我有一个服务器java应用程序使用码头websocket服务器和bittorrent-tracker websocket客户端
问题是当我与许多客户端运行时,它在我的java应用程序中有内存泄漏
我通过"htop"和"jcmdPIDVM检查java应用程序的内存使用情况。native_memory"
我使用的jetty websocket版本是jetty-9.4.15. v20190215,我尝试了较新版本的jetty-9.4.44.v20210927,但仍然存在内存泄漏
我已经测试了客户端构建从码头websocket客户端和内存泄漏不会发生
我还使用以下选项进行测试
=
问题是
"哪里导致内存泄漏?"
这可能是您的代码。例如,如果websocket在服务器端没有正确关闭,它们可能会占用各种资源……包括堆外缓冲区等。
Jetty代码中存在导致这种情况的bug并非不可想象,但如果存在,人们会期望其他人会报告它,等等。(您是否检查过Jetty问题跟踪器,以确认Jetty websocket代码中内存泄漏的报告?)
无论哪种方式,您都需要进行一些调查。
为什么htop中的物理内存(RES)大于JVM中的内存使用量?
这并不罕见。典型的JVM除了Java堆之外还使用大量内存。这种用法包括: