测试开发进阶——Jdk—相关命令认识——常用命令简介

1、jps

查看java进程,得到进程ID:7854

作用等同于:ps -ef | grep java

 

 

 

 

2、jstat

监视虚拟机各种运行态信息

常用:jstat -gcutil PID,监视java堆状况

远程机器上无法直接使用jstat命令,解决方法参考:https://wiki.sankuai.com/pages/viewpage.action?pageId=841802032

chroot --userspec=99:99 / sh -c 'jstat -gcutil 7854'的输出如下:

S0:Survivor0区已使用空间的百分比

​S1:Survivor1区已使用空间的百分比

​E:Eden区已使用空间的百分比

​O:老年代已使用空间的百分比​

P:永久代已使用空间的百分比​

YGC:从应用程序启动到采样时发生Young GC的次数

​YGCT:从应用程序启动到采样时Young GC所用的时间(单位秒)

​FGC:从应用程序启动到采样时发生Full GC的次数

​FGCT:从应用程序启动到采样时Full GC所用的时间(单位秒)​

GCT:从应用程序启动到采样时发送GC的总时间(单位秒)

 

 

 

3、jstack

生成虚拟机当前时刻的线程快照

jstack PID | grep 16进制线程ID查看线程信息

比如要到java进程中最消耗CPU的那个线程的信息:

(1)top -Hp 7854

找到最耗CPU的线程ID是7975

(2)printf '%x ' 7975

把该线程ID转为16进制,为1f27

(3)chroot --userspec=99:99 / sh -c 'jstack 7854 | grep -A 20 1f27'

输出线程的堆栈信息

可以看到是cat中的程序

C:myproject>jar
用法:jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目录] 文件名 ...
选项:
    -c  创建新的存档
    -t  列出存档内容的列表
    -x  展开存档中的命名的(或所有的〕文件
    -u  更新已存在的存档
    -v  生成详细输出到标准输出上
    -f  指定存档文件名
    -m  包含来自标明文件的标明信息
    -0  只存储方式;未用ZIP压缩格式
    -M  不产生所有项的清单(manifest〕文件
    -i  为指定的jar文件产生索引信息
    -C  改变到指定的目录,并且包含下列文件:
如果一个文件名是一个目录,它将被递归处理。
清单(manifest〕文件名和存档文件名都需要被指定,按'm' 和 'f'标志指定的相同顺序。
示例1:将两个class文件存档到一个名为 'classes.jar' 的存档文件中:
       jar cvf classes.jar Foo.class Bar.class
示例2:用一个存在的清单(manifest)文件 'mymanifest' 将 foo/ 目录下的所有
           文件存档到一个名为 'classes.jar' 的存档文件中:
       jar cvfm classes.jar mymanifest -C foo/ .

原文地址:https://www.cnblogs.com/xiaobaibailongma/p/15357368.html