part5-JDK常用工具(二)
目录页:https://mp.****.net/postedit/95937156
1. 常用的命令行工具
1.1. jinfo
jinfo常用于查看或设置JVM参数,执行jinfo -help查看命令格式。
参数:
- pid:进程号
- executable core 产生core dump文件
- [[email protected]]remote server IP or hostname 远程的ip或者hostname,server-id标记服务的唯一性id
option:
- -flag name 输出对应名称的参数
- -flag [+|-]name 开启或者关闭对应名称的参数
- -flag name=value 设定对应名称的参数
- -flags 输出全部的参数
- -sysprops 输出系统属性
- no option 输出全部的参数和系统属性
1.1.1. jinfo pid
jinfo pid命令用于查看进程的全部参数和系统属性,会打出较多的参数信息。
1.1.2. jinfo -flag name pid
输出对应名称的参数,可以查看指定的 jvm 参数的值,减号代表该参数未生效,加号代表生效。
1.1.3. jinfo flag [+|-]name pid
开启或者关闭对应名称的参数,常用于无法重启线上应用时又需要添加启动参数。
1.1.4. jinfo -flag name=value
如果JVM启动参数是value值,需要使用该命令修改指定参数的值。
1.1.5. jinfo -flags pid
输出进程全部JVM参数
1.2. jmap
当出现频繁gc时我们会使用jmap dump出程序的内存占用信息,也会使用该命令查看堆信息。
参数:
- executable: 产生核心dump的Java可执行文件。
- core: 需要打印配置信息的核心文件。
- server-id 可选的唯一id,如果相同的远程主机上运行了多台调试服务器,用此选项参数标识服务器。
- remote server IP or hostname 远程调试服务器的IP地址或主机名。
下面介绍主要使用的方法
1.2.1. jmap -heap pid
用于查看java进程堆内存信息。
1.2.2. jmap -dump:format=b,file=heapdump.phrof pid
这是我们发现程序内存溢出或频繁gc时经常使用的一个命令,用于生成堆转储快照dump文件,需要注意的是执行过程中会暂停应用,线上系统慎用。导出dump文件后可以使用MAT工具进行分析。链接:
https://download.****.net/download/u011294519/11796613
1.3. jstack
jstack命令我们经常用于查看进程的线程状态
jstack -l pid > file.txt