我是 Java 的初学者,想知道如何在 NetBeans 中分析这个内存配置文件会话以及如何观察它以帮助搜索内存泄漏?
什么是“实时字节”?我可以看到,当我对所有活动字节求和时,我只会得到 Java 应用程序系统内存使用的一小部分。为什么没有关于每种对象类型的分配字节的信息?“分配的对象”的价值不断增长是内存泄漏的迹象吗?
这是具有大量并发线程和 http 连接的应用程序。我检查了线程并且它们工作正常 - 我的意思是同时不超过 20 个线程。我使用 JBOSS Netty 进行 http 连接,使用 jSoup 来解析 HTML。
这种内存泄漏是由太多分配的 ParseError 对象引起的吗?或者我应该使用字节创建堆栈跟踪来搜索内存泄漏?
其他资源:
编辑:
我已将 HTML Cleaner 添加到我的项目中。这导致我不再看到任何解析器错误。内存泄漏增长现在慢了大约 3-4 倍。在达到 800MB 的内存使用后,应用程序崩溃了,我可以在 NetBeans 中查看堆。结果:
注意:我没有在我的应用程序中创建任何 LinkedHashMap,所以它必须由其他库创建。TagNode 是一个在“HTML Cleaner”清理后保存清理过的 html 的对象。我的应用程序中只有一个 TagNode 对象,它是 netty http 响应处理程序中的局部变量(由 messageReceived 调用)。