NicolasFränkel最近在博客文章“ 行业工具OpenJDK 11 ”中发布了与OpenJDK 11一起提供的命令行工具的调查。 在那篇文章中,他简要总结了工具jps (一个JVM进程状态工具 ), jinfo (一个JVM配置详细信息 ), jmap ( 堆上的类/对象 ), jstack ( 线程分析 )和图形工具JConsole ( 监视Java应用程序 )。 。

所有这些工具都很方便Java开发人员了解如何根据需要进行应用,Fränkel的帖子为这些工具的新手提供了很好的介绍性概述。 近年来,正如我在“ jcmd:一个 ” 一文中所讨论的,我已经转向使用单个jcmd工具代替大多数其他命令行工具(尽管它并不能以任何方式代替图形工具JConsole)。 JDK命令行工具可以全部统治 。”

关于与jcmd 相关的/ r / java subreddit线程 ,与各个工具进行了简短的讨论。 我可以看到两种方法的优点(使用jcmd或使用多个单独的工具)。 我对比了我对它们相对优势和劣势的看法。

jcmd与其余
jcmd 其他工具
单一互动工具 具有不同名称和选项的不同工具
由于具有交互性,因此运行功能需要更多的击键/命令 对于熟悉命令和选项的人员以及给定的JVM进程支持使用正在使用的命令/选项的情况,所需的击键次数更少
jcmd <pid> help提供了该JVM进程支持的特定功能以进行jcmd分析 针对JVM进程运行单个工具的结果是检测该工具对该进程的支持(或缺乏)的主要方法
仅支持某些个别工具的最常用功能子集 每个工具的性质决定了支持功能的标准
更新,在线资源更少 较旧,具有更多在线资源
不视为“实验性” 几个单独的工具( jpsjinfojmapjstack等)被标记为“实验性”,并且可能会更改/删除(“ 工具参考”指出“ 实验工具不受支持,应在理解的情况下使用。它们可能不会在将来的JDK版本中可用。其中一些工具当前在Windows平台上不可用。”)
可以通过DiagnosticCommandMBean以 编程方式使用提供的重要jcmd详细信息 个别工具很少有直接对应的编程访问权限

是使用jcmd还是使用单独的工具之一,很大程度上取决于个人的喜好和偏好。 那些已经使用过现有单个工具的人可能会喜欢那些工具中的更直接的方法,而那些不熟悉单个工具的人可能会喜欢jcmd提供的交互功能来确定哪些工具和选项可用。 我当然更喜欢非实验性工具,而不是“实验性”工具,但是对于许多版本的JDK,这些工具中的许多都被标记为“实验性”,并且仍然存在。

前面提到的博客文章“ jcmd:一个全部统治他们的JDK命令行工具 ”描述了如何使用jcmd的交互功能来标识其支持各种JVM进程的功能。 在该帖子的末尾有一张表格,将jcmd选项“映射”到一些相应的单个工具的命令和选项。 为了方便起见,我在这里复制。

功能性 jcmd 类似工具
列出Java进程 jcmd jps -lm
堆转储 jcmd <pid> GC.heap_dump jmap -dump <pid>
堆使用直方图 jcmd <pid> GC.class_histogram jmap -histo <pid>
线程转储 jcmd <pid> Thread.print jstack <pid>
列出系统属性 jcmd <pid> VM.system_properties jinfo -sysprops <pid>
列出VM标志 jcmd <pid> VM.flags jinfo -flags <pid>

jcmd工具继续得到增强。 JDK 9通过JEP 228 (“添加更多诊断命令”)对jcmd进行了一些增强。 在JDK 11中,对显示类加载器层次结构的支持已添加到jcmd 。 这是对类加载器层次结构的支持的简单屏幕快照。


正如Fränkel在其文章中所总结的那样: “ JDK提供了许多现成的工具来帮助开发人员”,并且“它们在开发人员的日常工作中是一笔巨大的财富。” 无论选择使用单个JDK提供的工具还是选择使用jcmd这种观点都适用。

翻译自: https://www.javacodegeeks.com/2019/02/jcmd-circa-jdk-11.html

jcmd,大约JDK 11相关推荐

  1. jcmd_jcmd,大约JDK 11

    jcmd NicolasFränkel最近在博客文章" 行业工具OpenJDK 11 "中发布了与OpenJDK 11一起提供的命令行工具的调查. 在那篇文章中,他简要总结了工具j ...

  2. 还没用上 JDK 11吧,JDK 12 早期访问构建版使用

    JDK 更新速度快的飞起,JDK 12 早期访问构建版已发布,你现在用到了第几版本? 本周Java的最大新闻可能是JDK 11的正式发布.不过在 6 月底,JDK 11 就已经进入了 Rampdown ...

  3. 腾讯 JDK 11 正式开源,高性能、太牛逼啦!

    点击关注公众号,Java干货及时送达 大家好,我是基基. 今天,基基,跟大家分享一下,腾讯2021年开源的 JDK11 ,腾讯大数据JVM团队在Kona JDK11开源项目中,坚持了一贯的兼容性.可靠 ...

  4. JDK 11版本时间表

    \ 看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料! \ \\ 在JDK 10发布两天之后,Oracle Java平台组首席架构师Mark Reinhold ...

  5. Java JDK 11:现在可以使用所有新功能

    为什么80%的码农都做不了架构师?>>>    删除了CORBA,Java EE和JavaFX支持,但添加了十几个主要新功能 目录 哪里可以下载JDK 11 Java 11 JDK中 ...

  6. JDK 11 马上就要来了!JDK 12 还会远吗?

    开发四年只会写业务代码,分布式高并发都不会还做程序员?   JDK 11 发布时间马上到来,于此同时,JDK 12 发布时间也已确定 -- 2019年3月19日.是的,6个月之后又能迎来新版本了! 甲 ...

  7. java11模块化开发_【JDK 11】关于 Java 模块系统,看这一篇就够了

    继 2014 年 3 月 Java 8 发布之后,时隔 4 年,2018 年 9 月,Java 11 如期发布,其间间隔了 Java 9 和 Java 10 两个非LTS(Long Term Supp ...

  8. openjdk和jdk_JDK 11:发行候选更新和OpenJDK JDK 11 LTS

    openjdk和jdk JDK 11 计划于 2018年9月25日星期二发布,以实现全面可用性 .OpenJDK jdk-dev邮件列表上的Mark Reinhold消息于2018 年8月16日宣布& ...

  9. jdk8读取文件_用于从文件读取/写入文件的新JDK 11文件方法

    jdk8读取文件 我之前的文章重点讨论了可能添加到JDK 11中的Files.isSameContent()方法. JDK-8201276 ["(fs)向文件添加方法以从文件读取字符串或向文 ...

最新文章

  1. GraphSAGE:我寻思GCN也没我厉害!
  2. 《高效程序员的45个习惯》之体会
  3. IA32中栈帧结构图
  4. 顺丰gis产品经理_线上面试季丰图科技—顺丰旗下专注GIS领域
  5. cmake构建工具 初步01
  6. JList的基本操作
  7. 5寸屏,智能之外也可以当数码相框
  8. python数据库操作批量sql执行_利用Python如何批量修改数据库执行Sql文件
  9. gradle——eclipse中安装与web项目创建
  10. vue项目整合到springboot方法
  11. [转]ASP.NET在线用户列表精确版—解决用户意外退出在线列表无法及时更新问
  12. OpenCV+QT5在Window下的环境配置记录
  13. onlyoffice 在线编辑
  14. linux apr下载地址,apache apr各版本国内高速下载地址及入门教程
  15. 重学前端学习笔记(一)--前端发展史以及学习痛点
  16. Cortex M4 SVC 中断
  17. Java 时间处理 ZoneId
  18. Excel 2010 VBA 入门 064 按照关键字批量创建超链接
  19. 二进制转化成ascll_微机原理实验-二进制到ASCII码转换
  20. 可持续集成(devops)工具盘古入门指南

热门文章

  1. Codeforces Round #667 (Div. 3)
  2. json-lib的字符串自动转换坑
  3. java各种集合的线程安全
  4. springmvc中报错Request processing failed;
  5. ssh(Spring+Spring mvc+hibernate)——BaseDaoImpl.java
  6. 2019蓝桥杯省赛---java---B---4(数的分解)
  7. 2015蓝桥杯省赛---java---B---6(加法变乘法)
  8. go编译库给c语言函数返回值,go语言 函数return值的几种情况
  9. 组合的示例代码 java_java实现Composite组合模式的实例代码
  10. 为什么jdk的CLASSPATH环境变量需要设置rt.jar 和 tools.jar