JVM-虚拟机常用命令和常用调试工具记录,jps,jstat,jinfo,jmap,jhat,jstack命令详解
1.常用工具所在位置Jdk的安装路径下的bin目录中,具体有哪些自己看去常用JDK监控和故障的处理工具命令用途jps显示指定系统内所有的虚拟机进程jstat用于收集虚拟机各方面的运行数据jinfo显示虚拟机配置信息jmap生成虚拟机快照jhat用于分析heapdump文件,会建立一个http/html服务器,可以在浏览器上查看分析结果jstack显示虚拟机快照2.具体命令的执行效果展示2.1. J
1.常用工具所在位置
Jdk的安装路径下的bin目录中,具体有哪些自己看去
常用JDK监控和故障的处理工具
命令 | 用途 |
---|---|
jps | 显示指定系统内所有的虚拟机进程 |
jstat | 用于收集虚拟机各方面的运行数据 |
jinfo | 显示虚拟机配置信息 |
jmap | 生成虚拟机快照 |
jhat | 用于分析heapdump文件,会建立一个http/html服务器,可以在浏览器上查看分析结果 |
jstack | 显示虚拟机快照 |
2.具体命令的执行效果展示
2.1. JPS命令
jps命令是用来显示指定系统内所有的虚拟机进程用的,支持远程
2.1.1 命令:jps -help
帮助命令,可以查看支持哪些操作
jps详细参考资料
2.1.2. 命令: jps
查看全部的java进程
2.1.3. 命令: jps -q
查看进程号, 只显示pid,不显示class名称,jar文件名和传递给main 方法的参数
2.1.4. 命令: jps -m
-m 输出传递给main 方法的参数,在嵌入式jvm上可能是null
2.1.5. 命令: jps -l
-l 输出应用程序main class的完整package名 或者 应用程序的jar文件完整路径名
2.1.6. 命令: jps -v
-v 输出传递给JVM的参数
2.1.7. 命令: jps -V
测试和发现该参数-V没啥用
2.1.8. 命令: jps [ip]:[port]
查看远程服务器的服务
2.2. jstat命令
主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。
2.2.1 命令: jstat -help
可以列出当前JVM版本支持的选项,常见的有
- l class (类加载器)
- l compiler (JIT)
- l gc (GC堆状态)
- l gccapacity (各区大小)
- l gccause (最近一次GC统计和原因)
- l gcnew (新区统计)
- l gcnewcapacity (新区大小)
- l gcold (老区统计)
- l gcoldcapacity (老区大小)
- l gcpermcapacity (永久区大小)
- l gcutil (GC统计汇总)
- l printcompilation (HotSpot编译统计)
具体执行参数和详细的请看参考资料
2.3. jinfo命令
2.3.1. 命令: jinfo -help
2.3.2. 命令: jinfo [pid]
查看对应进程的信息
完整信息如下:
Attaching to process ID 10207, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.121-b13
Java System Properties:
java.vendor = Oracle Corporation
sun.java.launcher = SUN_STANDARD
sun.management.compiler = HotSpot 64-Bit Tiered Compilers
sun.nio.ch.bugLevel =
os.name = Linux
sun.boot.class.path = /usr/java/jdk1.8.0_121/jre/lib/resources.jar:/usr/java/jdk1.8.0_121/jre/lib/rt.jar:/usr/java/jdk1.8.0_121/jre/lib/sunrsasign.jar:/usr/java/jdk1.8.0_121/jre/lib/jsse.jar:/usr/java/jdk1.8.0_121/jre/lib/jce.jar:/usr/java/jdk1.8.0_121/jre/lib/charsets.jar:/usr/java/jdk1.8.0_121/jre/lib/jfr.jar:/usr/java/jdk1.8.0_121/jre/classes
blade.service.version = 2.8.1.RELEASE
java.vm.specification.vendor = Oracle Corporation
java.runtime.version = 1.8.0_121-b13
spring.datasource.dynamic.enabled = false
user.name = root
blade.env = dev
spring.zipkin.base-url = http://47.104.151.36:9411
blade.dev-mode = true
user.language = zh
sun.boot.library.path = /usr/java/jdk1.8.0_121/jre/lib/amd64
info.version = 2.8.1.RELEASE
info.desc = blade-auth
PID = 10207
java.version = 1.8.0_121
user.timezone = Asia/Shanghai
sun.arch.data.model = 64
java.endorsed.dirs = /usr/java/jdk1.8.0_121/jre/lib/endorsed
sun.cpu.isalist =
sun.jnu.encoding = UTF-8
file.encoding.pkg = sun.io
file.separator = /
java.specification.name = Java Platform API Specification
JM.LOG.PATH = /root/logs
java.class.version = 52.0
csp.sentinel.api.port = 8719
knife4j.enable = true
user.country = CN
java.home = /usr/java/jdk1.8.0_121/jre
spring.cloud.nacos.discovery.server-addr = 47.104.151.36:8848
java.vm.info = mixed mode
os.version = 3.10.0-1160.6.1.el7.x86_64
sun.font.fontmanager = sun.awt.X11FontManager
path.separator = :
java.vm.version = 25.121-b13
java.protocol.handler.pkgs = org.springframework.boot.loader
spring.cloud.nacos.config.server-addr = 47.104.151.36:8848
java.awt.printerjob = sun.print.PSPrinterJob
sun.io.unicode.encoding = UnicodeLittle
awt.toolkit = sun.awt.X11.XToolkit
spring.cloud.sentinel.transport.dashboard = 47.104.151.36:8858
user.home = /root
blade.name = blade-auth
csp.sentinel.dashboard.server = 47.104.151.36:8858
java.specification.vendor = Oracle Corporation
java.library.path = /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
java.vendor.url = http://java.oracle.com/
spring.beaninfo.ignore = true
java.vm.vendor = Oracle Corporation
java.runtime.name = Java(TM) SE Runtime Environment
sun.java.command = /home/bladex/blade-auth.jar
java.class.path = /home/bladex/blade-auth.jar
blade.is-local = false
java.vm.specification.name = Java Virtual Machine Specification
java.vm.specification.version = 1.8
sun.cpu.endian = little
sun.os.patch.level = unknown
java.awt.headless = true
java.io.tmpdir = /tmp
csp.sentinel.app.name = blade-auth
java.vendor.url.bug = http://bugreport.sun.com/bugreport/
os.arch = amd64
java.awt.graphicsenv = sun.awt.X11GraphicsEnvironment
java.ext.dirs = /usr/java/jdk1.8.0_121/jre/lib/ext:/usr/java/packages/lib/ext
@appId = blade-auth
user.dir = /root
spring.application.name = blade-auth
spring.profiles.active = dev
line.separator =
java.vm.name = Java HotSpot(TM) 64-Bit Server VM
file.encoding = UTF-8
csp.sentinel.charset = UTF-8
csp.sentinel.flow.cold.factor = 3
java.specification.version = 1.8
VM Flags:
Non-default VM flags: -XX:CICompilerCount=3 -XX:InitialHeapSize=536870912 -XX:MaxHeapSize=536870912 -XX:MaxNewSize=178782208 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=178782208 -XX:OldSize=358088704 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:+UseParallelGC
Command line: -Xms512m -Xmx512m
2.3.3. 命令: jinfo -flags [pid]
查看进程虚拟机的参数
2.3.4. 命令: jinfo -flag xxx [pid]相关操作
该命令支持修改服务的命令参数
下方用打印GC日志参数为参考:PrintGC
命令 | 用途 |
---|---|
jinfo -flag <name> pid | 展示指定的参数 |
jinfo -flag [+|-]<name> pid | 开启或者禁用指定的参数 |
jinfo -flag <name>=<value> pid | 给指定的参数复制,可以修改 |
2.4. jmap命令
2.4.1 命令: jmap -help
2.4.2. 命令: jmap -heap [pid]
打印进程的堆信息
2.4.3. 命令: jmap -dump:live,format=b,file=heap.bin [pid]
生成一个进程的dump文件,可以下载下来使用工具查看
2.4.4. 命令:jmap -clastats [pid]
打印classload和jvm heap持久层的信息. 包含每个classloader的名字,活泼性,地址,父classloader和加载的class数量. 另外,内部String的数量和占用内存数也会打印出来
2.4.5. 命令:jmap -finalizerinfo [pid]
查看等待回收的对象信息
2.4.6. 命令:jmap -histo:live [pid]
打印每个class的实例数目,内存占用,类全名信息. VM的内部类名字开头会加上前缀”*”. 如果live子参数加上后,只统计活的对象数量.
2.5. jhat命令
2.5.1 命令: jhat -help
2.5.2. 命令: jhat [dumpfile]
读取dump文件,使得可以通过访问网页一样去查看dump内容
2.6. jstack命令
2.6.1. 命令: jstack -help
2.6.2. 命令:jstack -l [pid]
通过jstack输出的线程信息主要包括:jvm自身线程、用户线程等。其中jvm线程会在jvm启动时就会存在。对于用户线程则是在用户访问时才会生成。
从上述的代码示例中我们可以看到该用户线程的以下几类信息:
Ø 线程的状态:waiting on condition(等待条件发生)
Ø 线程的调用情况;
Ø 线程对资源的锁定情况;
2.6.3. 命令:jstack -m [pid]
2.6.4. 命令:jstack -F [pid]
常用:检测死锁,查看cpu占用高进程,
参考资料:
https://blog.csdn.net/jackyemail/article/details/80484892
更多推荐
所有评论(0)