原创

java线上环境常用命令

jinfo

jinfo:的用处比较简单,就是能输出并修改运行时的 java 进程的运行参数。

使用:

jinfo -opt pid

例如:查看 2788 的 MaxPerm 大小可以用 jinfo -flag MaxPermSize 2788。

jps

jps:与 unix 上的 ps 类似,用来显示本地的 java 进程,可以查看本地运行着几个 java 程序,并显示他们的进程号。

jstat

jstat:一个极强的监视 VM 内存工具。可以用来监视 VM 内存内的各种堆和非堆的大小及其内存使用量。

使用: jstat 工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。使用时,需加上查看进程的进程 id,和所选参数。以下详细介绍各个参数的意义。

jstat -class pid:显示加载 class 的数量,及所占空间等信息。

jstat -compiler pid:显示 VM 实时编译的数量等信息。

jstat -gc pid:可以显示 gc 的信息,查看 gc 的次数,及时间。其中最后五项,分别是 young gc 的次数,young gc 的时间,full gc 的次数,full gc 的时间,gc 的总时间。

jstat -gccapacity:可以显示,VM 内存中三代(young,old,perm)对象的使用和占用大小,如:PGCMN 显示的是最小 perm 的内存使用量,PGCMX 显示的是 perm 的内存最大使用量,PGC 是当前新生成的 perm 内存占用量,PC 是但前 perm 内存占用量。其他的可以根据这个类推, OC 是 old 内纯的占用量。

jstat -gcnew pid:new 对象的信息。

jstat -gcnewcapacity pid:new 对象的信息及其占用量。

jstat -gcold pid:old 对象的信息。

jstat -gcoldcapacity pid:old 对象的信息及其占用量。

jstat -gcpermcapacity pid: perm 对象的信息及其占用量。

jstat -util pid:统计 gc 信息统计。

jstat -printcompilation pid:当前 VM 执行的信息。

jstat -gcutil pid 1000 100: 1000ms 统计一次 gc 情况统计 100 次;

除了以上一个参数外,还可以同时加上 两个数字,如:jstat -printcompilation 3024 250 6 是每 250 毫秒打印一次,一共打印 6 次,还可以加上-h3 每三行显示一下标题。

jmap

jmap是一个可以输出所有内存中对象的工具,甚至可以将 VM 中的 heap,以二进制输出成文本。

使用:

jmap -dump:format=b,file=heap.bin <pid>

file:保存路径及文件名

pid:进程编号

jmap -histo:live pid| less:堆中活动的对象以及大小

jmap -histo pid >log :查看堆中对象信息

jmap -heap pid: 查看堆的使用状况信息

jstack

jstack: 查看 jvm 线程运行状态,是否有死锁现象等等信息

使用:

jstack pid : thread dump

jdk 自带的反解析工具

javap -verbose TestClass

java文件编译成class文件

javac TestClass.java

正文到此结束