问题标签 [jmap]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 打印由 shell 脚本启动的 Heroku java 应用程序的 jmap 输出
我想定期记录我的 Java 应用程序的 jmap 直方图,这个Heroku Dev 页面描述了如何通过在 java 命令前面加上with_jmap
.
但是,如果我使用 shell 脚本启动我的 Java 应用程序并且我不想修改那个 shell 脚本怎么办?我没有看到太多相同的文档。
java - JMap.java - 尝试连接到调试服务器时超时 - SwDbgSrv.exe
我正在尝试运行和调试来自 sun.jvm.hotspot.tools 和 sun.jvm.hotspot.utilities(如 JMap.java)的实用程序,以便更好地了解正在发生的事情。
不幸的是,我很早就遇到了以下错误消息,甚至没有进行很多调试:
似乎无论出于何种原因,这些工具都试图连接到在端口 27000 上运行的“调试服务器”。
在 sun.jvm.hotspot.tools.HeapDumer.java 的文档中,我发现了以下内容:
JDK jmap 实用程序使用此工具将目标进程/核心的堆转储为 HPROF 二进制文件。如果需要,它也可以用作独立工具。
所以我(也许天真地)假设 jmap.exe 以某种方式使用它,但我从未遇到过使用 jmap 创建堆转储的此类问题。我从来不需要先启动另一个进程。
有什么想法可以直接从我的开发环境运行所有这些工具吗?
谢谢
java - java内存转储从非二进制转换为二进制格式
使用工具 jmap,您可以创建两种格式的内存转储:
或者
我读过很多地方,只有二进制格式可以被 jhat 和 jvisualvm 等工具读取。
所以:
- 有没有可以读取其他格式的工具?
- 有什么工具可以从其他格式转换为二进制格式吗?
我有一个使用其他格式创建的内存转储文件,需要能够检查它,最好使用Eclipse Memory Analyzer Tool。
java - jvm 选项 -XX:OnOutOfMemoryError=jmap 有什么作用?
我试图在一台生产机器上监控一个进程(由于内存不足而崩溃)。该过程正在使用-XX:OnOutOfMemoryError=jmap
选项运行。这是什么意思?这是否意味着它会在 OutOfMemory 上产生堆转储?还是命令jmap
不完整,应该有更多?
java - “无法获取 sun/java2d/Disposer 的类数据”
我过去成功使用过一个脚本,JDK 没有改变,但由于某种原因,在这种情况下,我无法将核心转储转换为 hprof;
部分堆不会使用 visualvm 加载。
什么可能导致这种情况?这是一个已知的错误?有解决方法吗?
email - 开源 JMAP 兼容服务器?
我正在探索构建一个集中托管的电子邮件客户端的可能性,嵌入到我的站点中。用户将从我那里获得一个新的电子邮件地址,他们没有使用他们现有的电子邮件。本质上,我正在寻找作为一组 RESTful API 公开的电子邮件 Web 客户端的功能集(多个用户帐户、获取收件箱消息、阅读、删除、撰写新内容、组织等)。一个简短的网络搜索发现很少能满足我的愿望,但我确实遇到了http://jmap.io。我无法找到可以用于我的解决方案的规范的现有实现,并且希望避免编写自己的规范。是否有任何现有的解决方案(JMAP 或其他)可以满足我的需求?我已经排除了https://context.io/因为我不能让第三方存储或使用电子邮件。
java - JMap 替代品可用吗?
当我在 jmap 命令下运行时:
我能够看到我的对象的非常好的输出,有实例,使用的字节。
但不幸的是,这不受 Oracle 支持,并且在最新的 Windows 和 Linux JDK 发行版中不可用。有人可以帮忙推荐jmap的替代品吗?
java - 为什么我的 Java 堆转储大小比已用内存小得多?
问题
我们正试图找出我们的 Web 应用程序中出现大内存泄漏的罪魁祸首。我们在查找内存泄漏方面的经验非常有限,但我们发现了如何使用jmap
Eclipse MAT 进行 Java 堆转储并对其进行分析。
然而,我们的应用程序使用 56/60GB 内存,堆转储的大小只有 16GB,在 Eclipse MAT 中甚至更小。
语境
我们的服务器在 Ubuntu 14.04 上为我们的 java 应用程序使用 Wildfly 8.2.0,其进程使用了 95% 的可用内存。进行转储时,我们的缓冲区/缓存使用空间为 56GB。
我们使用以下命令创建转储:sudo -u {application user} jmap -dump:file=/mnt/heapdump/dump_prd.bin {pid}
堆转储文件大小为 16.4GB,当使用 Eclipse MAT 分析它时,它说大约有 1GB 活动对象和约 14.8GB 不可达/浅堆。
编辑:这是有关我们看到的问题的更多信息。我们监控我们的内存使用情况,我们看到它不断增长,直到剩下大约 300mb 的可用内存。然后它会停留在该内存量附近,直到进程崩溃,不幸的是应用程序日志中没有错误。
这使我们假设这是一个严重的 OOM 错误,因为这只发生在内存接近耗尽时。我们使用-Xms25000m -Xmx40000m
JVM 的设置。
问题
基本上,我们想知道为什么我们的大部分内存没有在这个转储中捕获。顶级保留大小类看起来不太可疑,所以我们想知道是否有一些与堆转储相关的东西我们做错了什么。
java - Java jmap -heap 命令给出了 OutOfMemoryError
我们定期运行 jmap -heap 命令来监控一个 tomcat 应用程序。然而,这是我们第一次遇到 OutOfMemoryError。
当我们在服务器级别监控内存时,大约有 110MB 可用。由于它只是监视,我们是否可以忽略这个时间,假设没有对应用程序造成任何损害并且在该命令运行时服务器内存不足?
更新:我们尝试再次运行 jmap -heap 并得到 java.lang.OutOfMemoryError: Cannot create GC thread。系统资源不足。
因此,问题似乎出在操作系统资源级别。
java - jmap -dump:file=./dump.bin 8895
我曾经用来jmap
监控堆内存。我运行了about
命令。之后我打开了dump.bin
. 我可以看到一些垃圾。
如何检查特定请求消耗的堆内存。
提前致谢。