Linux常用命令(三)

和java相关的命令

jps


jps – Java Virtual Machine Process Status Tool
可以列出本机所有java进程的pid
jps [ options ] [ hostid ]
选项

  1. -q 仅输出VM标识符,不包括class name,jar name,arguments in main method

  2. -m 输出main method的参数

  3. -l 输出完全的包名,应用主类名,jar的完全路径名

  4. -v 输出jvm参数

  5. -V 输出通过flag文件传递到JVM中的参数(.hotspotrc文件或-XX:Flags=所指定的文件


常用命令

[root@kxcs-34 ~]# jps -v
10705 Server -javaagent:/XXX/XXX/XXX/XXX/XXX-jdk1.8.jar -Xverify:none -Duser.timezone=Asia/Shanghai -Dfile.encoding=utf-8 -Xms1024M -Xmx1024M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=512M -Dapplication.path=/XXX/XXX/XXX -Dplay.id=
10594 Server -javaagent:/XXX/XXX-1.2.3-jdk1.8/XXX-1.2.3/XXX/XXX-1.2.3-jdk1.8.jar -Xverify:none -Duser.timezone=Asia/Shanghai -Dfile.encoding=utf-8 -Xms1024M -Xmx1024M -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=512M -Dapplication.path=/XXX/XXX/XXX -Dplay.id=
10579 Server -javaagent:/XXX/XXX-1.2.3-jdk1.8/XXX-1.2.3/XXX/XXX-1.2.3-jdk1.8.jar -Xverify:none -Duser.timezone=Asia/Shanghai -Dfile.encoding=utf-8 -Xms1G -Xmx1G -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=512M -Dapplication.path=/XXX/XXX/XXX -Dplay.id=
10613 Server -javaagent:/XXX/XXX-1.2.3-jdk1.8/XXX-1.2.3/XXX/XXX-1.2.3-jdk1.8.jar -Xverify:none -Duser.timezone=Asia/Shanghai -Dfile.encoding=utf-8 -Xms1024M -Xmx1024M -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=512M -Dapplication.path=/XXX/XXX/XXX -Dplay.id=
12143 Jps -Denv.class.path=.:/usr/jdk1.8.0_181/lib:/usr/jdk1.8.0_181/jre/lib -Dapplication.home=/usr/jdk1.8.0_181 -Xms8m
[root@kxcs-34 ~]# jps -l
10705 XXX.server.Server
10594 XXX.server.Server
10579 XXX.server.Server
10613 XXX.server.Server
12439 sun.tools.jps.Jps

 

jstack


jstack用于打印出给定的java进程ID的Java堆栈信息
jstack [ 选项] pid

  1. -F jstack [-l] pid无法响应时,强制打印堆栈

  2. -l l长列表. 打印关于锁的附加信息,例如属于java.util.concurrent的ownable synchronizers列表.

  3. pid java应用程序的进程号,一般可以通过jps来获得;


一般情况下,通过jstack输出的线程信息主要包括:jvm自身线程、用户线程等。
其中jvm线程会在jvm启动时就会存在。
对于用户线程则是在用户访问时才会生成
在线程中,有一些 JVM内部的后台线程,来执行譬如垃圾回收,或者低内存的检测等等任务,
这些线程往往在JVM初始化的时候就存在
还有一类线程是用户级别的,它会根据用户请求的不同而发生变化。
该类线程的运行情况往往是我们所关注的重点。而且这一部分也是最容易产生死锁的地方。
在实际运行中,往往一次 dump的信息,还不足以确认问题。
建议产生三次 dump信息,如果每次 dump都指向同一个问题,我们才确定问题的典型性

常用命令

  1. jstack 9002 > stack.log 将堆栈内容打印重定向到stack.log中,方便慢慢查看

jmap


Jmap是一个可以输出所有内存中对象的工具


常用命令

  1. jmap -heap 12345 打印heap空间的概要,这里可以粗略的检验heap空间的使用情况

  2. jmap -dump:live,format=b,file=xxx 2657 产生一个HeapDump文件,进程号为2657

  3. jmap -histo 1234 生成一个类的统计报表,显示什么类有多少个实例,共占了多少字节等 进程号为1234

  4. jmap -finalizerinfo 3772 打印正等候回收的对象的信息

jstat


jstat命令查看jvm的GC情况
jstat [Options] vmid [interval] [count]

  1. Options,选项,我们一般使用 -gcutil 查看gc情况

  2. vmid,VM的进程号,即当前运行的java进程号

  3. interval,间隔时间,单位为秒或者毫秒

  4. count,打印次数,如果缺省则打印无数次

一些命令

  1. jstat -gc 1024 5000 会每5秒一次显示进程号为1024的java进程的GC情况

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值