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

如何使用visualvm查找内存泄漏

郁高韵
2023-03-14
问题内容

我怀疑我们的ActiveMQ连接桥中存在严重的内存泄漏-
我们看到的是典型的内存泄漏模式(应用程序加载正常,如果长时间运行或在短时间内一次又一次地重新启动,则会降低速度)
。我查找了发现Java内存泄漏的现代最佳实践,许多开发人员似乎正在放弃传统工具(如jhat / jmap)来代替new(er)jvisualvm

启动此工具(并花几个小时阅读其教程)后,我便能够为CPU和内存拍摄探查器快照。

在这一点上,我有点卡住了-如何分析这些快照以识别泄漏?关于如何使用jvisualvm生成快照,有很多文档,但是关于如何实际使用快照的文档很少。

提前致谢。


问题答案:

使用visualvm分析内存泄漏不是那么容易。它具有一个称为“采样器”的工具/插件。这可用于采样内存或cpu。您可以定期拍摄快照并查找可能的泄漏。以下是有关使用方法的一些详细信息-
通过快速搜索获得

更有效的方法是获取堆转储(例如,当应用程序变慢或OOM发生时)。VisualVM帮助您进行
堆转储 (使用“ 监视器” 选项卡上的“ 堆转储 ” )

可以通过MAT分析此文件-
一些详细信息,请参见 如何分析.hprof文件?



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

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

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

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

  • 问题内容: 您如何找到Java中的内存泄漏(例如使用JHat)?我试图在JHat中加载堆转储,以进行基本了解。但是,我不明白我应该如何找到根引用(ref)或任何被称为根引用的东西。基本上,我可以说哈希表条目有几百兆字节([java.util.HashMap $ Entry或类似的东西),但是地图到处都是……使用某种方法可以搜索大型地图,还是找到大对象树的一般根? [编辑]好的,到目前为止,我已经阅

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