gpt4 book ai didi

java - Eclipse Memory Analyzer - Leak Suspects Report 没有指向我的类 - 为什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:31:12 25 4
gpt4 key购买 nike

我正在尝试确定我的 web 应用程序中是否存在内存泄漏。我正在使用 VisualVM 和 JMeter 来加载测试和观察堆。

我昨天将堆转储保存到文件并下载了 Eclipse Memory Analyzer...在对 VisualVM 感到非常沮丧之后,我认为 Eclipse 会比 VisualVM 更好地查明泄漏(如果有的话)。

我在 Eclipse 中打开堆文件并运行他们所谓的泄漏嫌疑报告。我以为它会指向我的 webapp 中的一个特定类,但事实并非如此。所以我不知道如何使用它提供的信息来找出泄漏嫌疑人在我的任何特定类别中的位置。

这是我的一个堆转储文件的泄漏可疑报告的结果。

One instance of "org.apache.catalina.session.StandardManager" loaded by "org.apache.catalina.loader.StandardClassLoader @ 0x261bdac0" occupies 16,977,376 (48.54%) bytes. The memory is accumulated in one instance of "java.util.concurrent.ConcurrentHashMap$Segment[]" loaded by "".Keywordsorg.apache.catalina.loader.StandardClassLoader @ 0x261bdac0org.apache.catalina.session.StandardManagerjava.util.concurrent.ConcurrentHashMap$Segment[]

报告中的其余详细信息如附图所示。我希望可以扩大图像以便仔细观察.... enter image description here

我知道 Eclipse 应该是非常好的软件。这是我最后一次尝试使用类似的东西来查找内存泄漏 - 我对如何使用此软件的知识非常非常有限。教程和帮助页面描述的内容就好像您在点击几下后就应该知道该怎么做一样……我需要更多的帮助。

最佳答案

虽然我没有任何使用 Eclipse 查找泄漏的经验,但我会先问一个问题:您如何确定存在内存泄漏?从您的问题来看,听起来您并不确定是否有泄漏,但您正在测试是否确实有泄漏。测试它的最简单方法是启动您的应用程序,记下它消耗了多少内存,让 JMeter 连续 24 小时点击它,然后查看它消耗了多少内存(可能在执行 GC 之后)。如果您的应用程序消耗了相当大一部分内存,或者因 OutOfMemoryError 而死亡,那么您就有了内存泄漏。

如果您发现您确实存在内存泄漏,那么我会首先建议您通过 FindBugs 运行您的应用程序,看看它是否可以通过快速静态分析找到内存泄漏。如果这不起作用,那么 this article (虽然它很旧)可能会帮助您理解 Eclipse 给您的结果。

关于java - Eclipse Memory Analyzer - Leak Suspects Report 没有指向我的类 - 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4935193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com