【问题标题】:Why java8 server JRE do not contain server specific tools like jstack, jmap, jvisualvm, jstat为什么 java8 服务器 JRE 不包含服务器特定工具,如 jstack、jmap、jvisualvm、jstat
【发布时间】:2015-04-13 12:32:48
【问题描述】:

来自oracle

Server JRE 包括用于 JVM 监控的工具和常用工具 服务器应用程序需要,但不包括浏览器 集成(Java 插件)。

从服务端工具使用情况来看,监控排名靠前的工具有jstack、jvisualvm、jstat、jconsole;服务器 jre 包的 jdk/bin 中都缺少所有内容。

关于这个捆绑背后的理性的任何想法。

编辑

这仅适用于“server jre 8”。对于“server jre 7”,所有这些工具都存在。

【问题讨论】:

  • 我认为那是因为您提到的工具是开发工具。它们不适用于生产环境,此工具仅用于开发、调试和分析。
  • @alexeymalev,这些工具用于监控 java 进程是否存在任何问题。例如:在生产中,我们使用 jstack 来分析服务器挂起,使用 jvisualvm 进行任何监控/分析。根据描述,我觉得我们应该采用“server jre”来满足这些需求。
  • 不确定这个问题是否可以由不在 Oracle 工作的人按照目前的措辞实际回答。
  • 它们在我的 JRE 7 中不存在。它们是 JDK 工具。
  • @EJP 它们存在于服务器 jre 7 中,而不是常规 jre 7 中。但服务器 jre 8 中也缺少相同的内容。

标签: java


【解决方案1】:

经过一番研究,我发现许多“缺失”的工具功能实际上仍然可用。

例如 jcmd 可以比 jstack 做同样的事情而且更多。要在严重的 jre 8 中进行线程转储,请使用 jcmd $PID Thread.print

jconsole 工具功能是间接可用的,即使 bin 中缺少 jconsole,jconsole.jar 也在 lib 文件夹中,您可以使用 java -jar lib/jconsole.jar 执行它以获得相同的旧功能。

jcmd 也可用于获取其他内存/gc 统计信息。运行jcmd $pid help 以查看更多信息。

因此,使用这些工具,我认为可以在服务器 jre 8 中获得与我们在服务器 jre 7 中获得的相同功能集,并且可能会从服务器 jre 8 中删除它以消除冗余。

【讨论】:

  • jstat 呢?我非常需要检查元空间,但我遇到了同样的情况:jre 8 server edition 上没有 jstat :(
  • 你好,例如 jstat -gc
  • @Phate,为此使用 jcmd $pid GC.run
  • @Phate,这可能是因为您没有以运行 java 进程的用户身份运行命令。运行“ps -ef | grep java”,找到用户和“su $user”,然后运行“jcmd $pid GC.run”。
【解决方案2】:

使用 jattach

apk add --no-cache jattach --repository http://dl-cdn.alpinelinux.org/alpine/edge/community/

参考:https://dev.to/jarekprzygodzki/generating-jvm-memory-dumps-from-jre-h8c

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    • 2019-06-04
    • 2014-08-15
    • 2015-09-10
    相关资源
    最近更新 更多