jinfo命令
该命令查询Java程序的运行信息
jinfo -opt pid
jps 命令
该命令显示当前所有java进程pid的命令,每一个java程序都会独占一个java虚拟机实例,不过jps只能显示当前用户的进程id。java程序启动后,会在目录/tmp/hsperfdata_{userName}/下生成几个文件,文件名就是java进程的pid,至于启动参数,则是读取文件中的内容。
显示Java程序及启动参数
jps -v
显示Java程序及启动Main方法和包名
jsp -l
jstat命令
该命令详细查看堆内各个部分的使用量,以及加载类的数量。
显示加载class的数量,及所占空间等信息
jstat -class pid
显示VM实时编译的数量等信息
jstat -compiler pid
可以显示gc的信息,查看gc的次数,及时间。其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间
jstat -gc pid
可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小,如:PGCMN显示的是最小perm的内存使用量,PGCMX显示的是perm的内存最大使用量,PGC是当前新生成的perm内存占用量,PC是但前perm内存占用量。其他的可以根据这个类推, OC是old内纯的占用量
jstat -gccapacity
new对象的信息
jstat -gcnew pid
new对象的信息及其占用量
jstat -gcnewcapacity pid
old对象的信息
jstat -gcold pid
old对象的信息及其占用量
jstat -gcoldcapacity pid
perm对象的信息及其占用量
jstat -gcpermcapacity pid
统计gc信息统计
jstat -util pid
当前VM执行的信息
jstat -printcompilation pid
除了以上一个参数外,还可以同时加上 两个数字,如:jstat -printcompilation pid 260 6是每260毫秒打印一次,一共打印6次,还可以加上-h3每三行显示一下标题
jmap命令
该命令主要用于打印指定java进程的共享对象内存映射或堆内存细节。
堆Dump是反映堆使用情况的内存镜像,其中主要包括系统信息、虚拟机属性、完整的线程Dump、所有类和对象的状态等。一般在内存不足,GC异常等情况下,我们会去怀疑内存泄漏,这个时候就会去打印堆Dump
打印的信息分别为:共享对象的起始地址、映射大小、共享对象路径的全程
jmap pid
查看堆使用情况
jmap -heap pid
查看堆中对象数量和大小,打印的信息分别是:序列号、Class实例的数量、内存的占用、类限定名
jmap -histo pid
如果是内部类,类名的开头会加上*,如果加上live子参数的话,如jmap -histo:live pid,这个命名会触发一次FUll GC,只统计存活对象