java - 如何修复 MQTT 应用程序的内存泄漏?

标签 java memory-leaks mqtt paho jvisualvm

我有一个使用 paho mqtt 库的应用程序。 我注意到 VisualVM 的应用程序中似乎存在内存泄漏。

以下是一些屏幕截图:enter image description here

首先我不明白为什么会有这样的峰值,如果有人能解释一下我将不胜感激。 然后你可以看到,应用程序开始时内存约为 5Mb,结束时内存超过 10Mb,我的结论是某处存在内存泄漏,对吗?

这是我执行垃圾收集器后的屏幕截图: enter image description here

您可以看到它返回到大约 5Mb 内存,但仍然不断增长。

我不知道这是否有用,但我截图了以了解内存增长来自哪个线程:

enter image description here

希望有人能帮助我。非常感谢!

最佳答案

该图看起来像 generational garage 的输出收集器,并且不显示内存泄漏。锯齿是年轻代在工作,基线的增加是长生命周期数据被复制到老年代。

事实上,在触发收集后,图表重置为 5mb,这是因为老一代正在被清理,并释放了从年轻代复制过来的现在未引用的数据。

关于java - 如何修复 MQTT 应用程序的内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42158181/

相关文章:

azure - 是否可以将 MQTT 消息发送到事件中心?或者还有别的办法吗?

java - 使用批处理文件运行Java项目(内置于eclipse)

java - 动态调整咖啡因缓存的大小

c - 在 C 中分配的指针上 malloc 安全吗?

go - 从go例程外部停止goroutine

android - Android 上的 MQTT Eclipse Paho 客户端,断开连接挂起并且永远不会完成

acl - Mosquitto 身份验证插件 ACL 检查不会被调用订阅

java - Java 是运行每个条件运算符还是在 If 语句中短路?

java.sql.SQLException : Access denied for user 'userx' @'%' (using password: YES)

c++ - 奇怪的 "Memory Leak Detection"错误 C++