首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何分析一个大的堆转储?

如何分析一个大的堆转储?
EN

Stack Overflow用户
提问于 2011-06-01 18:42:05
回答 3查看 3.5K关注 0票数 5

如果只能将1.5 2GB分配给JVM,是否有工具可以分析大型Java堆转储(2 2GB)?我不敢相信转储必须完全加载到内存中才能进行分析...

Eclipse MemoryAnalyzer失败了,IBM工具也失败了。

我现在需要在这里使用命令行工具吗?

EN

回答 3

Stack Overflow用户

发布于 2011-06-01 20:03:30

如果是开发服务器,则将最大堆大小限制为32位操作系统可以处理的大小。如果是在生产环境中,则需要64位操作系统!如果你不能做到这一点,你可以在服务器上运行jhat (它有一个web界面,你可以在你自己的PC上访问)。

票数 3
EN

Stack Overflow用户

发布于 2019-12-12 12:55:11

一种解决方案是在远程服务器上安装MAT tool,并生成分析的HTML输出,以便下载并在本地查看。这就省去了在远程机器上安装X窗口和整理所有ssh隧道的麻烦(当然,这也是一种选择)。

首先,下载并安装独立的Eclipse RCP应用程序。然后传输到您的服务器并解压缩。然后确定堆转储的大小,并在必要时修改MemoryAnalyzer.ini文件以实例化一个具有足够内存的JVM。

在本例中,我有一个11 In的堆转储,并修改了最后两行(添加-Xms)

代码语言:javascript
复制
-startup
plugins/org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.300.v20150602-1417
-vmargs
-Xmx16g
-Xms16g

执行一次初始运行以解析堆转储。这将生成可供后续运行使用的中间数据,以使未来的分析速度更快。

代码语言:javascript
复制
./ParseHeapDump.sh /path/to/heap-dump

完成后,您可以对数据运行任何一种不同的分析。下面是如何搜索内存泄漏可疑对象的说明。

代码语言:javascript
复制
./ParseHeapDump.sh /path/to/heap-dump org.eclipse.mat.api:suspec
票数 3
EN

Stack Overflow用户

发布于 2019-12-12 12:39:00

不幸的是,Eclipse MAT和所有堆转储分析工具都会将整个堆转储加载到内存中,以便进行分析。如果Eclipse MAT为您失败,您可以尝试HeapHero工具。与Eclipse MAT相比,JHAT分析堆转储需要更多的内存和时间。

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

https://stackoverflow.com/questions/6199878

复制
相关文章

相似问题

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