在Java开发中,经常需要对JVM进行诊断和调优。
Arthas是一款功能强大的Java诊断工具,它提供了丰富的命令来帮助用户查看和分析Java应用程序的运行状态。
本文将深入介绍Arthas中常用的JVM相关命令,以帮助大家更好地理解和使用Arthas。
1. jvm—查看当前 JVM 的信息
# 查看当前 JVM 的信息
jvm
2. sysprop—查看和修改JVM的系统属性
2.1. 查看所有属性
#查看所有属性
sysprop
2.2. 查看指定属性
sysprop java.version
思考那么多属性,还都是英文的,我需要将注解全部记住?
不需要,查看单个属性,支持通过tab补全
2.3. 修改单个属性
-- 查看
$ sysprop user.country
user.country=US
-- 修改
$ sysprop user.country CN
Successfully changed the system property.
user.country=CN
3. sysenv—查看JVM的环境变量
3.1. 查看全部环境变量
sysenv
3.2. 查看指定环境变量
sysenv JAVA_HOME
4. vmoption—查看和修改JVM里诊断相关的启动参数
vmoption 命令在 Arthas 中用于查看和修改 JVM 启动选项。
JVM 启动选项是在 JVM 启动时设置的一系列参数,它们可以用于配置 JVM 的行为,例如堆大小、垃圾收集器类型、启用或禁用某些特性等。
可以理解为IDEA中的VM options
4.1. 查看全部option
vmoption
4.2.令修改 JVM 启动选项
设置最小堆空闲比例为30%
vmoption MinHeapFreeRatio 30
5. logger—查看和修改logger
5.1. 查看所有logger信息
logger
结果
name ROOT
class ch.qos.logback.classic.Logger
classLoader jdk.internal.loader.ClassLoaders$AppClassLoader@2437c6dc
classLoaderHash 2437c6dc
level INFO
effectiveLevel INFO
additivity true
codeSource file:/D:/allsoftware/install/apache-maven-3.6.3/mvn_repo/ch/qos/logback/logback-classic/1.2.12/logback-classic-1.2.12.jar
appenders name CONSOLE
class ch.qos.logback.core.ConsoleAppender
classLoader jdk.internal.loader.ClassLoaders$AppClassLoader@2437c6dc
classLoaderHash 2437c6dc
target System.out
说明
- name: Logger对象的名称,这里是”ROOT”。
- class: Logger对象所属类的全限定名,这里是ch.qos.logback.classic.Logger,表示使用Logback的Logger实现。
- classLoader: Logger对象所属的类加载器。
- classLoaderHash: 类加载器的哈希值。
- level: Logger对象的日志级别,这里是INFO级别。
- effectiveLevel: Logger对象的有效日志级别,表示实际应用的日志级别,这里也是INFO级别。
- additivity: 指示是否继承父Logger的appenders配置。
- codeSource: Logger对象的代码来源,即该Logger对象所在的Jar文件路径。
- appenders: Logger对象的附加器(Appender)配置,这里是一个ConsoleAppender,用于将日志输出到控制台。
5.2. 查看指定logger
logger –name [查找类的全路径]
logger -n org.springframework.web
结果
[arthas@20304]$ logger -n org.springframework.web
name org.springframework.web
class ch.qos.logback.classic.Logger
classLoader jdk.internal.loader.ClassLoaders$AppClassLoader@2437c6dc
classLoaderHash 2437c6dc
level null
effectiveLevel INFO
additivity true
codeSource file:/D:/allsoftware/install/apache-maven-3.6.3/mvn_repo/ch/qos/logback/logback-classic/1.2.12/logback-classic-1.2.12.jar
5.3. 更新全局logger level
logger --name ROOT --level debug
结果
[arthas@20304]$ logger --name ROOT --level debug
Update logger level success.
查看修改后的日志级别
[arthas@20304]$ logger level
name ROOT
class ch.qos.logback.classic.Logger
classLoader jdk.internal.loader.ClassLoaders$AppClassLoader@2437c6dc
classLoaderHash 2437c6dc
level DEBUG
effectiveLevel DEBUG
additivity true
codeSource file:/D:/allsoftware/install/apache-maven-3.6.3/mvn_repo/ch/qos/logback/logback-classic/1.2.12/logback-classic-1.2.12.jar
appenders name CONSOLE
class ch.qos.logback.core.ConsoleAppender
classLoader jdk.internal.loader.ClassLoaders$AppClassLoader@2437c6dc
classLoaderHash 2437c6dc
target System.out
5.4. 更新指定类日志级别
命令:logger -c [classLoaderHash的值] –name [查找类的全路径] –level [待更新的日志level]
- 查看org.springframework.web的日志信息
logger -n org.springframework.web
- 修改org.springframework.web的日志级别
logger -c 2437c6dc -n org.springframework.web --level debug
结果:发现日志级别修改为debug