1 基本知识

jcmd 是在 JDK1.7 以后,新增了一个命令行工具。

jcmd 是一个多功能的工具,相比 jstat 功能更为全面的工具,可用于获取目标 Java 进程的性能统计、JFR、内存使用、垃圾收集、线程堆栈、JVM 运行时间,也可以手动执行 GC、导出(TODO 能导出线程信息?)线程信息、堆信息等信息。

2 jcmd 用法

2.1 查看进程 jcmd -l

作用:查看 当前机器上所有的 jvm 进程信息。
同类作用的命令:jcmd、 jcmd -l 、 jps -lm 这三个命令作用相同

2.2、jps -lm

1255 org.tanukisoftware.wrapper.WrapperSimpleApp CloudResetPwdUpdateAgent
20399 /etc/java-app/springtest-0.0.1-SNAPSHOT.jar
5087 sun.tools.jps.Jps -lm

2.3 列出当前运行的 java 进程可以执行的操作【常用】

命令:jcmd help
作用:列出当前运行的 java 进程可以执行的操作

2.4 查看具体命令的选项

命令:jcmd help command
作用:列出当前运行的 java 进程可以执行的操作

2.5 查看内存信息【常用】

命令:jcmd GC.heap_info
作用:查看JVM内存信息,虽然名称为heap_info,但是除了堆内存信息,也会有堆外内存之一的Metaspace的信息。相比jstat命令结果会更直观一些。

2.6 查看性能统计信息

命令:jcmd PerfCounter.print
作用:查看指定进程的性能统计信息。

2.7 VM.uptime

命令:jcmd VM.uptime
作用:查看 JVM 的已启动时长。

2.8 GC.class_histogram【常用】

命令:jcmd GC.class_histogram
作用:查看系统中类统计信息。
同类作用的命令:和jmap -histo pid的效果是一样的,可以查看每个类的实例数量和占用空间大小。

2.9 Thread.print

命令:jcmd Thread.print
作用:查看线程堆栈信息。

同类作用的命令:和jstack -l作用一样

2.10 GC.heap_dump

命令:jcmd GC.heap_dump FILE_NAME
作用:查看 JVM 的Heap Dump。导出的 dump 文件,可以使用MAT 或者 Visual VM 等工具进行分析(如果只指定文件名,默认会生成在启动 JVM 的目录里)

同类作用的命令:和 jmap -dump:format=b,file=heapdump.phrof pid 作用一样

2.11 VM.system_properties

命令:jcmd VM.system_properties
作用:查看 JVM 的属性信息。

2.12 VM.flags

命令:jcmd VM.flags
作用:查看 JVM 的启动参数。

结果解析:

-XX:InitialHeapSize:初始堆大小。同-Xms
-XX:MaxHeapSize: 最大堆大小。 同-Xmx
-XX:MinHeapDeltaBytes: 表示当JVM决定是否要做或者尝试扩容的时候最小扩/缩多少,JDK1.8以下默认为192K,JDK1.8默认512K
-XX:newSize:表示新生代初始内存的大小
-XX:MaxNewSize:JVM堆区域新生代内存的最大可分配大小
-XX:OldSize:老生代的大小
-XX:+UseParallelGC:指 定在New Generation 使用 parallel collector垃圾收集器 -XX:CICompilerCount:最大并行编译数

-XX:+UseCompressedClassPointers:开启类指针压缩

-XX:+UseCompressedOops:开启普通对象指针压缩

2.13 VM.command_line

命令:jcmd VM.command_line
作用:查看 JVM 的启动命令行。

2.14 GC.run_finalization

命令:jcmd GC.run_finalization
作用: 对 JVM 执行 java.lang.System.runFinalization()。执行一次 finalization 操作,相当于执java.lang.System.runFinalization()。调用已经失去引用的对象的finalize方法,但是JVM可以选择执行或者不执行。

2.15 GC.run

命令:jcmd GC.run
作用:对 JVM 执行 java.lang.System.gc()。同 GC.run_finalization 告诉垃圾收集器打算进行垃圾收集,但是JVM可以选择执行或者不执行。

2.16 VM.version

命令:jcmd VM.version
作用:查看目标jvm进程的版本信息。

2.17 VM.native_memory

命令:jcmd VM.native_memory
作用:查看目标jvm进程的Native Memory Tracking (NMT)信息,用于追踪JVM的内部内存使用。

jcmd <pid> VM.native_memory [summary | detail | baseline | summary.diff | detail.diff | shutdown] [scale= KB | MB | GB]

summary: 分类内存使用情况.

detail: 详细内存使用情况,除了summary信息之外还包含了虚拟内存使用情况。

baseline: 创建内存使用快照,方便和后面做对比

summary.diff: 和上一次baseline的summary对比

detail.diff: 和上一次baseline的detail对比

shutdown: 关闭NMT

更具体的使用方法参考:

https://blog.csdn.net/superiorpengFight/article/details/109353633

参考文章:https://www.jianshu.com/p/011f0e3a39ff

文章知识点与官方知识档案匹配,可进一步学习相关知识
Java技能树首页概览117157 人正在系统学习中

[转帖]jcmd命令详解的更多相关文章

  1. [转帖]xargs命令详解,xargs与管道的区别

    xargs命令详解,xargs与管道的区别 https://www.cnblogs.com/wangqiguo/p/6464234.html 之前一直说要学习一下 xargs 到现在为止也没学习.. ...

  2. [转帖]dd命令详解

    dd命令详解 https://czmmiao.iteye.com/blog/1748748 之前一直对linux的命令很恐惧 现在发现 其实不是那么复杂 要仔细学习就可以了 比如 dd = disk ...

  3. [转帖]pidstat 命令详解

    pidstat 命令详解 https://www.jianshu.com/p/3991c0dba094 pidstat -r -u -d -p 各种参数非常好用. pidstat 概述 pidstat ...

  4. [转帖]ps 命令详解

    ps 命令详解 https://www.jianshu.com/p/cba22cce2f97 ps 概述 Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那 ...

  5. [转帖]iostat 命令详解

    iostat 命令详解 https://www.jianshu.com/p/5fed8be1b6e8 概述 iostat 主要用于输出磁盘IO 和 CPU的统计信息. iostat属于sysstat软 ...

  6. [转帖]Linux的wget命令详解

    Linux的wget命令详解 来源不明 找到的也是转帖的 https://www.cnblogs.com/cindy-cindy/p/6847502.html Linux wget是一个下载文件的工具 ...

  7. 【转帖】Linux定时任务Crontab命令详解

    Linux定时任务Crontab命令详解 https://www.cnblogs.com/intval/p/5763929.html 知道有crontab 以及 at 命令 改天仔细学习一下 讲sys ...

  8. [转帖]Linux:cut命令详解

    Linux:cut命令详解 https://www.cnblogs.com/Spiro-K/p/6361646.html cut -f cut -f -d cut -c1- 这三个命令好像最常见, 记 ...

  9. [转帖]Linux chattr 命令详解

    Linux chattr 命令详解 https://www.cnblogs.com/ftl1012/p/chattr.html 常见命令参数 1 2 3 4 5 6 7 8 9 10 11 12 A: ...

  10. 【转帖】linux sort,uniq,cut,wc,tr,xargs命令详解

    linux sort,uniq,cut,wc,tr,xargs命令详解 http://embeddedlinux.org.cn/emb-linux/entry-level/201607/21-5550 ...

随机推荐

  1. Kubernetes Service 中的 external-traffic-policy 是什么?

    [摘要] external-traffic-policy,顾名思义"外部流量策略",那这个配置有什么作用呢?以及external是指什么东西的外部呢,集群.节点.Pod?今天我们就 ...

  2. java中的数据库连接池

    常见的连接池的优缺点: HikariCP 优点: 性能出色,尤其在高并发负载下表现良好 内存消耗低,占用系统资源较少 具有自动化的连接池维护和统计功能 缺点: 需要 JDK7 或以上版本支持 配置选项 ...

  3. 诸多老牌数据仓库厂商当前,Snowflake如何创近12年最大IPO金额

    摘要:在数据仓库/分析领域,有传统厂商Oracle,Teradata,开源软件Hadoop,云厂商AWS Redshift,Google Bigquery,Snowflake成功的技术原因是什么? 1 ...

  4. 理论+实践,揭秘昇腾CANN算子开发

    摘要: 本文介绍了CANN自定义算子开发的几种开发方式和算子的编译运行流程.然后以开发一个DSL Add算子为例,讲解算子开发的基本流程. 本文分享自华为云社区<昇腾CANN算子开发揭秘> ...

  5. 深度克隆从C#/C/Java漫谈到JavaScript真复制

    如果只想看js,直接从JavaScript标题开始. 在C#里面,深度clone有System.ICloneable.创建现有实例相同的值创建类的新实例 克隆原理 值类型变量与引用类型变量 如果我们有 ...

  6. 聊聊Hive数据血缘——从Atlas没有列级血缘的Bug讲起

    前几天,Datahub提供了最新的字段级别数据血缘功能,很多朋友迫不及待想对比一下Datahub的字段级血缘与Atlas的区别. 这个时候问题来了,在Atlas收集Hive血缘的时候,由于部分版本问题 ...

  7. 【开源项目推荐】——纯中文本地GPT知识库搭建项目.assets

    大家好,我是独孤风. 又到了本周的开源项目推荐.近一年多的时间,人工智能迎来了大爆发.GPT相关的大模型的发展让很多领域都发生了巨大的变化. 但是虽然GPT的自然语言识别功能异常的强大,但回答给我们的 ...

  8. Python pickle 二进制序列化和反序列化 - 数据持久化

    模块 pickle 实现了对一个 Python 对象结构的二进制序列化和反序列化. "pickling" 是将 Python 对象及其所拥有的层次结构转化为一个字节流的过程,而 & ...

  9. ME51N 创建采购申请

    1业务说明 当寻源后,将寻源结果汇总,并创建采购申请,之后据此创建采购订单. 此文档使用BAPI:BAPI_REQUISITION_CREATE创建采购申请 2前台实现 事务代码:ME51N 3代码实 ...

  10. vivo 全球商城:架构演进之路

    本文讲述 vivo 官方商城从单体应用到具备综合能力电商平台的演进,系统架构往服务化.中台化的变迁历程. 一.前言 vivo官方商城,是vivo官方的线上电商平台,主营vivo手机及专属配件.经过几年 ...