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/ .