开发者学堂课程【线上问题排查利器 Alibaba Arthas(上):Jvm 相关命令之:Jvm、sysprop】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/746/detail/13192
JVM 的相关命令:JYM、sysprop
内容介绍:
一、JYM 的作用
二、JYM 效果实操演示
三、SYSPROP
四、小结
一、JYM 的作用
JYM 是用来查看当前 Java 虚拟机的信息。
二、JYM 效果实操演示
这条命令直接在代码处输入 JYM,然后点击回车,这时需要等待其读取 JYM 当中的信息,其中内容是较多的,需要大概查看,首先最上面是运行时的一些信息,例如机器名称(MACHINA-NAME)、虚拟机开启时间(JYM-START-TIME)等,包括还有所有的类路径(CLASS-PATH),以及包括库所在的路径(LIBRARY-PATH)都会显示出来,还有一些输入参数,比如 tomcat 。
这是所有已经加载的类(CLASS-LOADING),还有现在正在加载的类的总数(LOADED-CLASS-COUNT),以及总共加载的类的总数(TOTAL-LOADED-CLASS-COUNT),还有卸载的类的总数(UNLOADED-CLASS-COUNT)等。这在不同的会话里可能看到的不一样,不同的会话会有区别。
下面还有内存管理器相关的信息(MEMORY-MANAGERS)、内存相关的信息(MEMORY)。
以及操作系统的信息(OPERATING-SYSTEM),例如 Linux 操作系统(OS),架构(ARCH),版本号(VERSION)等等。
与线程相关的信息(THREAD),线程的总数(COUNT),后台线程的总数(DAEMON-COUNT),以及虚拟机开启后所有启动的线程最大的个数(PEAK-COUNT)。还有现在总共已经开启的个数(STARTED-COUNT),因为有时候一些线程被释放了。最后一个是所有死锁的线程的个数(DEADLOCK-COUNT)。
●COUNT: JVM 当前活跃的线程数
●DAEMON-COUNT: JVM 当前活跃的守护线程数
●PEAK-COUNT:从 JVM 启动开始曾经活着的最大线程数
●STARTED-COUNT:从 JVM 启动开始总共启动过的线程次数
●DEADLOCK-COUNT: JVM 当前死锁的线程数
下面是与文件描述符相关的信息(FILE-DESCRIPTOR),最大的文件描述符(MAX-FILE-DESCRIPTOR),以及所有打开的文件描述符(OPEN-FILE-DESCRIPTOR)。
●MAX-FILE-DESCRIPTOR-COUNT: JVM 进程最大可以打开的文件描述符数
●OPEN-FILE-DESCRIPTOR-COUNT: JVM 当前打开的文件描述符数
以上是整个显示所有 Java 虚拟机当中的信息,这就是 JYM 的作用。
三、SYSPROP
1.作用
Sysprop 顾名思义,其含义为系统的属性,作用也是用来查看和修改。
Java 虚拟机的系统属性。其有查看和修改两个功能。中间除非诊断时需要,否则一般不修改。
2. 举例
(1)查看所有属性。sysprop
(2)查看单个属性,支持通过 tab 补全。sysprop java.version
[arthas@3174]$ sysprop java.version
java.version=1.8.0_221
那么先看第一个功能,第一条命令输入 sys,再按 tab 键,这时会出现同名的,显示出来的 sysprop,点击回车可以看到这时显示的是所有的系统属性,键值对,左边是键右边是值。这里显示的是比较多的。例如操作系统的版本(os.version),Java home 的路径,用户的所在国家(user.country),如果只想看其中一个就先输入 Sysprop(可以按 tab 键补全),很方便并且不需记忆。例如需要知道 Java home 的位置,就在 Sysprop 后输入 Java home,点击回车,这时系统就会告诉你,Java home 的所在路径。
(3)修改单个属性
① sysprop user.country
②user.country=Us4
③ sysprop user.country CN
④ Successfully changed the system property.
7 user.country=CN
arthas@3174]$ sysprop user.country
user.country=CN
[arthas@3174]$ sysprop user.country US
Successfully changed the system property.
user.country=US
第二个功能修改,例如现在想修改用户所在的国家,先在 sysprop后输入 user-country,点击回车,这里例如这位用户显示在中国(country=CN)。修改可以在前面输入键,后面输入值,比如输入 US,这样该用户就变成美国了,同时也可以再改回来。所以也可以在运行的时候修改一些 Java 临时的系统属性,这样便于调试。
四、小结
jvm相关命令 |
说明 |
dashboard |
显示线程,内存,GC(垃圾回收器),系统环境等信息 |
Thread |
显示线程信息(包括阻塞信息,繁忙线程信息等) |
jvm |
与 JVM 相关的信息 |
Sysprop |
显示系统属性信息,也可以修改某个属性 |