Java开发

查看Java运行中程序相关情况
贵鬼2024-09-30发布
18 0

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,只统计存活对象