gpt4 book ai didi

Java:比较 Netbeans 中的内存堆转储

转载 作者:行者123 更新时间:2023-11-30 06:00:09 27 4
gpt4 key购买 nike

我如何比较 Netbeans 中的内存堆转储?

我所做的是将我的项目配置为使用分析,然后在选定的代码行添加几个分析点(类似于设置断点)。这些分析点触发“快照”,创建内存转储。

当我的应用程序运行时,分析选项卡会列出每个分析点,并标记它遇到的命中数,提供打开该分析点报告的链接。此外,探查器控制面板将新快照添加到列表中。

如果我打开这些报告并点击链接,或者从控制面板打开快照,在这两种情况下,Netbeans 都会打开一个带有Summarysnapshot 选项卡,实例OQL 子屏幕。

如果我从 Profiler 控制面板中选择其中之一,然后按保存,文件将以 HPROF 格式保存。

如果我选择菜单 Profile --> Compare Memory Snapshots,它只允许我选择 NPS 格式的文件,我无法获得其中的任何文件。

我相信比较内存快照听起来应该能够比较堆转储,但我不知道该怎么做。

问题

  • Netbeans 将 NPS 文件放在哪里(如果它确实在创建它们)?如果不是,我如何让 Netbeans 创建从分析点触发的 NPS 文件?

  • 有没有办法让 Netbeans 比较 HPROF 文件,因为那毕竟是内存堆转储?

  • 还是我完全忽略了一些东西?

谢谢!


背景

使用 Netbeans 6.7.1

我正在为一个存在内存泄漏问题的非常大且复杂的应用程序进行内存分析。我已经成功地使用 Netbeans 的探查器和 JHAT(JDK 附带的命令行实用程序)的组合解决了大量泄漏。我需要更强大的堆分析功能的是剩余的散兵游勇 -以前行之有效的假设优先方法的有效性正在下降。

这个问题非常具体,有关更多背景信息,请参阅 a question I have asked previously .

最佳答案

不幸的是,我没有征求有关可以执行此操作的其他工具的建议。

后来我发现 Netbeans 确实支持内存堆转储的比较,但只是间接支持。编辑分析点,以便在“堆”上选择“快照”。这意味着 Netbeans 将生成 .nps 文件而不是 .hprof 文件。

.nps 文件是 Netbean 自己的专有文件格式,而 .hprof 是“通用”堆转储格式,几乎所有分析工具都可以理解,包括 JHAT, MAT 和 Netbeans。

但是,Netbeans 的局限性在于它可以查看 .hprof 文件并对其进行分析,但无法将它们与另一个 .hprof 文件进行比较。不过,它可以将一个 .nps 文件与另一个 .nps 文件进行比较。但是,可用的分析级别受限于 .nps 文件,因此这是权衡。


所以,回答我自己的问题:

Where is Netbeans putting the NPS files (if it is indeed creating them)? If not how do I get Netbeans to create NPS files triggered from profiling points?

  • 非此即彼,每个分析点只能选择一个。

Is there a way to get Netbeans to compare HPROF files, since that is the memory heap dump after all?

  • 没有。您无法与 HPROF 进行比较。比较两个不同时间点的内存的唯一方法似乎是比较两个 NPS。

关于Java:比较 Netbeans 中的内存堆转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1796668/

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