问题标签 [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.

0 投票
0 回答
310 浏览

java - 程序内部的java堆直方图

我如何heap-dump从我的 Java 程序中调用类似于 jmap 使用"-histo"选项生成的内容。据了解heap-dump的形式(或类似的binary输出)可以通过使用来处理,但不能用于堆直方图(?)"-dump" optionjmapHotSpotDiagnosticMXBean

0 投票
2 回答
4227 浏览

java - JMAP 命令和调试对象的错误是 64 位



我需要在 IST 环境中运行的 Web 逻辑服务器的堆转储。我无权访问,因此我已要求支持团队这样做。在 UNIX 上执行的命令如下:

./jmap -heap:格式=b 19153

当支持团队执行命令时,他们会得到以下输出:

正在附加到进程 ID 19153,请稍候...
附加到进程时出错:附加失败:调试对象是 64 位,使用 java -d64 作为调试器

我认为服务器是 64 位的,但是这个建议在说什么?这是否意味着服务器应该在命令中使用该标志启动?

我试图在互联网上寻找这样的问题,但我没有得到任何有用的信息。有没有人知道如何找到解决方案!!!???

我感谢大家提供您的帮助!

问候,
凯坦

0 投票
0 回答
134 浏览

java - jmap 工具适用于 JVM 1.3 及更早版本吗?

我们可以使用 jmap 工具(Java 1.4 版本)为较旧的 jvm 版本生成堆转储文件吗?例如 Java 1.3?如果不可能,有没有办法从 Java 1.3 JVM 获取堆转储?

0 投票
2 回答
10605 浏览

java - 使用 JMAP 进行堆转储时出现异常

当我使用堆转储时出现以下异常

jmap -F -dump:format=b,file=/tmp/heapdump/before.hprof 10737

有谁知道如何解决这个问题?

0 投票
1 回答
574 浏览

java - sun.tools.jmap.JMap.main 无法识别

我有行'sun.tools.jmap.JMap.main(args);' 在我的代码中。Eclipse 给出错误,说类没有被识别。所以,我尝试下载 sun.tools jar。但我在任何地方都找不到这个罐子!

我不确定要包含什么来消除此错误。请帮忙!

0 投票
2 回答
3781 浏览

java - 如何在堆转储中查看程序变量名称和值?

我在执行 Java 程序时使用 JMAP 创建 JVM 的堆转储。然后使用 JHAT 我在浏览器中打开转储详细信息。

现在,我可以看到内存转储的许多细节,但我不知道如何简单地查看程序变量值及其值。你能在这里指导我吗?我只需要使用命令行来显示变量名称和值。

提前致谢!

0 投票
1 回答
1735 浏览

java - 垃圾收集器优先和 JMap EOF 错误

我们正在处理客户的生产服务器堆以检测和解决内存泄漏。为此,我们定期使用 jmap 来收集必要的信息。

但是上周我们无法进行转储,因为它触发了 EOF 错误并关闭了 Tomcat 实例。

我在互联网上搜索,但找不到有关此错误的任何具体信息。我们检测到它仅在使用Gc First垃圾收集器算法时发生。

这是我们用来执行 jmap 的命令行:

jmap -dump:format=b,file=heap.bin <PID>

服务器上的 Java 版本:JDK 1.7.0_7 x64

有没有人已经遇到过这种错误?可能缺少某些配置或需要对 java/jmap 的补丁。

更新

我们收集的有关此错误的更多信息:

注意:目标目录有超过 500gb 的可用空间

输出到 catalina.out 的错误(JVM 转储错误):

0 投票
1 回答
84 浏览

java - Java 内存:引用从何而来?

我有一个使用大量内存的 Java 程序。我使用 jmap -histo:live 来追踪正在使用所有内存的对象。只有几种类型占用了大部分内存,其中 > 1M,但我不知道引用来自哪里

有没有办法从命令行告诉哪些类型的对象持有对这些的引用?

谢谢!

0 投票
5 回答
18375 浏览

java - Java:在没有 jmap 或不挂起应用程序的情况下获取堆转储

在少数情况下,我们的应用程序使用了大约 12 GB 的内存。我们尝试使用 jmap 实用程序获取堆转储。由于应用程序正在使用一些 GB 的内存,它会导致应用程序停止响应并导致生产出现问题。

在我们的例子中,堆使用量在 6 小时内突然从 2-3 GB 增加到 12 GB。为了找出内存使用趋势,我们尝试在重新启动应用程序后每隔一小时收集一次堆转储。但正如所说,由于使用 jmap 会导致应用程序挂起,我们需要重新启动它,并且我们无法获得内存使用的趋势。

有没有办法在不挂起应用程序的情况下获取堆转储,或者是否有除 jmap 之外的实用程序来收集堆转储。

对此的想法受到高度赞赏,因为如果不了解内存使用的趋势,就很难解决这个问题。

注意:我们的应用程序在 CentOS 中运行。

谢谢,阿伦

0 投票
1 回答
4719 浏览

jmap - Jmap - 连接到远程调试服务器时出错

我的要求是使用 Jmap 创建一个远程服务器的堆内存转储文件。我是这样做的。

这很好用,因为 3104 是我本地机器上进程的 pid。我如何对远程服务器执行相同操作?我试过

但它失败了。我尝试使用 jsadebugd 创建调试服务器,如下所示。1.启动rmiregistry

rmir​​egistry -J-Xbootclasspath/p:$JAVA_HOME/lib/sa-jdi.jar

2.运行jsadebugd

但是第2步抛出以下错误:

帮我摆脱它。