首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java内存分析工具和内存泄漏检测工具有什么区别?

Java内存分析工具和内存泄漏检测工具有什么区别?
EN

Stack Overflow用户
提问于 2010-01-21 19:40:37
回答 2查看 1.2K关注 0票数 1

Java内存分析工具(像Yourkit Java Profiler这样的分析器)和Java内存泄漏检测工具之间有什么区别吗?(从我的搜索来看,很难注意到工具的差异,但在我看来,这似乎是方法方式上的差异)。如果有,是否有用于内存泄漏检测(不包括内存分析)的免费工具(可供下载)?提前谢谢你!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-01-21 20:43:16

可以将内存泄漏检测工具看作是内存分析工具的优化版本,它可以帮助您发现问题,而不必自己仔细查找数据。

我已经用过Yourkit了。我认为它同时具备这两个特性。虽然它没有明确指出“伙计,你的漏洞在这一行代码上”,但它提供了比较内存快照的工具,以显示随着时间的推移发生了什么变化,并提供了各种工具来跟踪对象的引用,以找出为什么它们仍然保留在内存中。

根据您对泄漏检测工具的定义,有人可能会认为JConsole中显示堆内存使用情况的图形是一个泄漏检测工具。看看usage...if在足够长的一段时间内的堆消耗图,平均值一直在上升,很有可能会有泄漏。

我和Yourkit的人没有关系,但我可以推荐这个工具。它可能会更好,但也不是很糟糕。我将其用于内存和cpu性能分析。我会定期对我们的产品进行加载和内存测试(JConsole/JMX和其他方法),并在出现问题时使用Yourkit。大约每隔2-4个月,我就会做一次cpu分析,寻找容易修复的性能瓶颈(我们的负载测试会捕获主要问题)。

票数 1
EN

Stack Overflow用户

发布于 2011-11-16 18:41:58

严格地说,在C/C++意义上,java中不存在内存泄漏:内存分配不再引用它。

因此,当术语“泄漏”在java上下文中使用时,有时它只是表示大的内存结构。一些工具称它们为“泄漏嫌疑人”,因为它们不能根据问题的性质或错误来判断内存结构是否很大。

有时“泄漏”被用在动态的意义上:随着时间的推移而增长的内存结构。

因此,首先,您需要一个内存工具,它可以让您对java堆转储快照中的内存分布和引用结构有一个定量的了解。有了这些,您就可以通过比较两个或多个快照来研究动态行为。

如果这些工具提供了额外的“泄漏特性”(JProbe的Memory-Leak-Doctor,Eclipse-MATs Memory-Leak Report),这表明它们在呈现真正全面的内存结构视图方面存在问题。

如果您正在寻找免费下载,请查看

http://eclipse.org/mat/

和在

http://dr-brenschede.de/bheapsampler/

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2108860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档