- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个 web 应用程序存在类加载器泄漏问题,因为在多次重新部署该 web 应用程序后 PermGen 内存不足。
Google 和网络上的几个乐于助人的人告诉我,调查此类问题的方法是在分析器中打开内存转储,找到有问题的类加载器,然后查看导致此问题的 GC 根路径装载机。使用 Yourkit 这样做,我可以找到 a leak due to the CompositeClassLoader of Drools ,甚至设法解决它。我想。
但是在应用修复之后,我仍然看到类加载器在重新部署后没有被 GC。当我向 Yourkit 询问加载程序的路径时,它可以显示数百个路径。请不要告诉我这是我必须调查的泄漏数量!
(前两条路径来自Drools,我在修复之前拍了快照。我还隐藏了我公司的包名,只是为了避免任何投诉。)
更令人困惑的是,如果我使用选项卡 Paths to loader (Alt+3) 与使用命令时得到的路径不同来自 GC 根的路径 (Ctrl+P) 打开一个新标签:
所以我想明白:
我提到 Yourkit 是因为这是我使用并且熟悉的(至少对于其他分析任务)以防它有任何特别之处,但我认为这与其他内存转储分析器非常相似。我的Yourkit版本是8.0。
最佳答案
这是 Yourkit 推荐的查找类加载器泄漏的方法,他们会检查它 here :
这是发现泄漏的示例:
这是您正在寻找的图像,顶部是泄漏的类加载器,底部是泄漏的原因。
通常泄漏是由服务器类加载器中的静态变量引起的,该静态变量保存对泄漏类加载器上的对象的引用(例如,WAR 中提供的 JDBC 驱动程序),或者由第一个类加载器启动的线程超过了部署和包含一个线程局部变量,该变量引用了古代类加载器的对象。
关于java - 如何使用 yourkit 调查类加载器泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22832251/
我正在使用 YourKit 来分析我的 Web 应用程序。如果 Yourkit 的线程 View 中列出了一个 Java 线程,并且该线程也被标记为已完成,这是否意味着该线程已完成但线程对象仍然存在(
使用 64 位 Windows 7 企业版,根据 YourKit docs : To check that Java can load the profiler agent, invoke the f
我的应用程序在 weblogic 上运行并创建多个线程来处理来自客户端的请求。在使用 YourKit 进行 CPU 分析时,我发现信息不完整。 YourKit 中显示的时间与使用应用程序日志观察到的时
我最近下载了 YourKit 的试用版,玩了一段时间后看起来不错,但我担心在生产环境中运行它。我以前使用的分析器给服务器带来了 Not Acceptable 开销。 有人知道 YourKit 软件的典
一个对象的保留大小不等于它引用的所有对象的保留大小。 这是正在发生的事情: 使用 YourKit 捕捉内存快照。 点击一个对象并按类类型显示实例 假设实例的保留内存是 A 字节 (600mb) 展开并
我正在尝试减少应用程序中特定代码路径上的锁争用。为了识别具有高锁争用的代码,我将 YourKit 连接到我的应用程序并使用“监视器”选项卡并查看获取哪些锁导致我关心的线程被阻止。我的最终目标是在 YK
在 150G 机器上分析一个大约 100G 内存消耗的 Java 应用程序通常需要多少时间?我大约 2 小时前开始进行分析,到目前为止只完成了 20%。自从我开始分析以来,jvm 使用的总内存已达到
我是 YourKit 的新手profiler 并在阅读了一些好评后想尝试一下。我正在尝试分析在 weblogic 应用程序服务器中运行的 web 应用程序。我基本上想检查在开始记录和停止记录对象分配之
我有一些代码段想要在许多不同的输入(~1000)上进行分析,因此手动运行每个测试并保存结果是没有意义的。我将 yourkit 与 Eclipse 结合使用来进行分析。有没有办法创建“新 session
我一直在使用 yourkit,它是一个很棒的工具。我通常使用 CPU 消耗水平曲线,以及线程随时间向下钻取。 但最近我怀疑是 yourkit 引起了我的应用程序随机 20 秒的卡住,因为没有发生过多的
是否可以使用 yourkit API ( https://www.yourkit.com/docs/java/api/index.html ) 来检查堆中的对象?例如,检查意味着获取堆中对象的字段值。
我有一个 web 应用程序存在类加载器泄漏问题,因为在多次重新部署该 web 应用程序后 PermGen 内存不足。 Google 和网络上的几个乐于助人的人告诉我,调查此类问题的方法是在分析器中打开
我知道 yourkit 可以很容易地集成到 Eclipse 中,您可以启动程序“Profile As”,它会自动连接到 Yourkit API 和统计分析。这总是运行程序并对其进行配置。 现在,如果我
我正在尝试提取 YourKit 的“线程” View 中显示的数据(关于线程状态;主要是当每个线程“等待”或“可运行”时)。我已使用命令行导出实用程序为其支持的所有 View 生成所有格式。 导出目录
有人在使用 yourkit 制作的 .NET 分析器吗?我正在寻找一个好的 .NET 分析器并偶然发现了 yourkit 一个。因为我会购买单人许可证,所以对我来说将花费 79 欧元,恕我直言,这还不
我正在使用 JVisualVM 和 YourKit 来分析堆内存转储(使用 jmap 创建),并注意到对于同一个对象,它们报告了两个截然不同的保留大小!有谁知道可能是什么原因吗? 最佳答案 当然,造成
我正在尝试追踪 Grails 应用程序的内存泄漏,并且正在使用 Yourkit Profiler,但遇到了问题。 我在生产服务器上的 Tomcat6 中运行了 Grails 应用程序,并解压了 You
是否可以更改 YourKit 远程分析器放置其 jars 的目录? 我们在尝试使用 YourKit 分析代理在 CloudFoundry(运行 Ubuntu 10.10)上启动 Tomcat 时遇到此
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 8 年前。 Improve this qu
有谁知道以 YourKit 格式捕获 8GB 堆大小的 Java 1.6 JVM 的内存快照需要多长时间?在那段时间里它会完全停止 JVM 吗? 我想找到产生过多垃圾的方法,因此想要启用对象分配记录,
我是一名优秀的程序员,十分优秀!