当前位置: 首页 > 面试题库 >

我需要使用MAT查找内存泄漏的帮助

戚高洁
2023-03-14
问题内容

我正在使用MAT比较两个堆转储。我每天都进行堆转储,并且每天增长约200兆。我认为该泄漏与java.util.zip有关,这是因为该表显示的内容,也是因为我们最近添加了一个新过程,该过程可以压缩和解压缩很多文件。(见图片)

堆转储直方图比较

此时,我打开支配器并过滤。 充气机
。那产生了大量的java.util.zip.Inflater。现在,我想看看是什么使它们保持打开状态,所以我选择了一个,并运行了GC根路径,排除了弱引用和软引用(见图)。

GC根

看起来这与罐子的充气有关,与我的过程无关。在这一点上,我陷入困境,需要一些建议。

编辑1

Sean询问了ThreadLocals。如果查看不带过滤器dominator_tree,则会看到java.lang.ApplicationShutdownHooks是堆的58%。如果我展开其中一些条目,则可以看到它们似乎在ThreadLocalMap中。我将如何找到放置它们的东西?

在此处输入图片说明

编辑2

肖恩的评论使我走上了正确的道路。我正在使用Glassfish v
2.0,它存在内存泄漏。它会不断创建新的LogManager,并将它们添加到ApplicationShutdownHooks集合中。

我通过打开ApplicationShutdownHooks并从集合中手动删除对象来解决此问题。


问题答案:

肖恩的评论使我走上了正确的道路。我正在使用Glassfish v
2.0,它存在内存泄漏。它会不断创建新的LogManager,并将它们添加到ApplicationShutdownHooks集合中。

我通过打开ApplicationShutdownHooks并从集合中手动删除对象来解决此问题。



 类似资料:
  • 代码的jsfiddle如下:http://jsfiddle.net/4qhr2/ 然而,我不清楚如何使用谷歌Chrome的分析器来验证这是,事实上的情况。堆探查器快照中出现了无数的东西,我不知道如何解码什么是好的/坏的。到目前为止,我在它上面看到的教程要么告诉我“使用快照分析器”,要么给我一个关于整个分析器如何工作的非常详细的宣言。是否可以仅仅将探查器作为一个工具,或者我真的必须了解整个事情是如何

  • 问题内容: 我怀疑我们的ActiveMQ连接桥中存在严重的内存泄漏- 我们看到的是典型的内存泄漏模式(应用程序加载正常,如果长时间运行或在短时间内一次又一次地重新启动,则会降低速度) 。我查找了发现Java内存泄漏的现代最佳实践,许多开发人员似乎正在放弃传统工具(如jhat / jmap)来代替new(er)。 启动此工具(并花几个小时阅读其教程)后,我便能够为CPU和内存拍摄探查器快照。 在这一

  • 我的应用程序需要大约10GB的RAM用于特定输入,而对于常规输入,大约1GB就足够了。通过对JProfiler进行更仔细的分析,可以发现(在GC之后)java的标准类使用了相当多的内存。util* :

  • 问题内容: 我想在我的Java应用程序中发现内存泄漏,但是我不知道如何使用Netbeans Profiler来做到这一点。 问题答案: 网络上有一些资源可以帮助您 http://www.javapassion.com/handsonlabs/nbprofilermemory/ http://www.netbeans.org/kb/articles/nb-profiler- uncoveringle

  • 我们在堆大小为512M的IBM J9 VM上运行weblogic服务器。 今天,服务器因OutOfMemory错误而失败。 我使用Eclipse Memory Analyzer打开了堆转储文件xxx.phd(安装了IBM DTFJ pluign以支持。phd文件)。 垫子给我一份泄漏嫌疑人报告,像这样: 我如何找到创建这个大数组的类? 或者任何帮助我识别大数组的提示?

  • 我需要找到Flutter的内存泄漏。如何找到他们?以及如何为测试创建内存泄漏?