gpt4 book ai didi

java - 如何分析和理解 Java Web 应用程序的输出

转载 作者:行者123 更新时间:2023-11-30 05:15:55 25 4
gpt4 key购买 nike

我目前正在尝试分析一个 Java Web 应用程序。我将 Netbeans Profiler 与 Eclipse 结合使用。我的服务器(Tomcat)通过 eclipse 插件运行,我使用 Netbeans profiler 动态连接到服务器。

我有一个主要问题,有时服务器在环境中耗尽内存。我读到有关内存泄漏的内容,我意识到有两种方法:1. 内存中的大对象未被收集并导致内存泄漏或2. 小对象不断在内存中分配而不被收集。

虽然第二个通常很难找到,但一个常见的症状是,在一段时间内,垃圾收集中幸存的代数将不断增加,无论速度如何。这似乎发生在我的网络应用程序中,尽管没有真正发生任何 Activity 。世代在一段时间内稳步增长,无一异常(exception)。迫使我认为我在某个地方有一些引用的对象,这些对象应该被垃圾收集。

我使用探查器运行了测试,但不幸的是我不太了解如何精确定位对象。我注意到一个特定的 HASHMAP 的存活代计数持续增加,即使我多次进行垃圾收集。

我附上一个简单的屏幕截图,简要概述了我在启动应用程序的接下来几分钟内看到的内容。

如果您能给我指出一些真实的文章等,这些文章将启发我如何理解分析以及我应该做什么来确保捕获罪魁祸首,我将不胜感激。

非常感谢任何帮助。

找到所附的屏幕截图。 alt text http://dl.getdropbox.com/u/1264228/Files/State.png

最佳答案

检测任何应用程序(Java 或非 Java)中内存泄漏的最佳方法是在应用程序使用时定期拍摄内存快照,然后仔细检查所管理的不同类型对象的对象计数通过应用程序。

大多数内存泄漏可以追溯到一组内存消耗增加最多的对象。简而言之,应该优先考虑 Δ MEM(对象)而不是 Σ MEM(对象)。

一旦确定了导致泄漏的对象集,您就需要通过对象分配跟踪来查明泄漏源。

有关如何使用 Netbeans 执行此操作的快速介绍,您可以查看 Java Passion 中的其中一个教程。 .

在 Eclipse 中,您会发现 MAT 插件描绘支配树的能力非常有用。

最后,以下术语列表会很有用,因为有效的分析需要了解这些术语作为先决条件:

关于java - 如何分析和理解 Java Web 应用程序的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1302151/

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