jps(java process status tool), 用于查看java进程及相关信息,如果你想找到一个java进程的pid,可以使用jps命令代替linux的ps命令。
命令格式: jps 【options】 【hostid】
options参数:
hostid : 主机或其他服务器IP, 不写默认查看本机
jinfo是用来查看jvm参数和动态修改部分jvm参数的命令
jinfo 【options】 <pid>
options参数解释:
no options :输出所有的系统属性和参数
pid代表进程id, 是必传参数
使用示例:
# 查看jvm参数和系统配置
jinfo 1234
jinfo -flags 1234
jinfo -sysprops 1234
# 查看打印GC日志参数
jinfo -flag PrintGC 1234
jinfo -flag PrintGCDetail 1234
# 打开/关闭 GC日志
jinfo -flag +PrintGC 1234
jinfo -flag -PrintGCDetail 1234
# 设置或自改参数值
jinfo -flag -Xms10m 1234
jstat命令主要用于查看jvm运行时状态信息, 包括内存状态、垃圾回收等
命令格式: jstat 【options】
interval 是打印间隔时间(ms), count 是打印次数, 默认一直打印
options参数解释:
使用示例:
jstat -gcutil 1234 1000 3 # 查看进程1234的垃圾回收信息, 没1s打印一次, 打印三次
字段解释:
jstat -gc 1234 1000 3
-gc与-gcutil类似, 只不过输出的不是百分比,而是实际的值
字段解释:
jstack是用来查看jvm线程快照的命令, 线程快照是当前jvm线程正在执行的方法堆栈集合。 使用jstack命令可以定位线程出现长时间卡顿的原因, 如死锁、死循环等。 jstack还可以查看程序崩溃时生成的core文件中的stack信息。
命令格式: jstack 【options】 【pid】
options参数解释:
jmap可以生成java程序的dump文件, 也可以查看堆内对象示例的统计信息、查看classLoader的信息以及finalizer队列
命令格式: jmap 【options】
options参数解释 :
使用示例:
jmap -dump:live,format=b,file=/dump.bin 1234 #将java堆中存活的对象信息转储到/dump.bin文件中
我们来看一下堆信息:
jmap -heap 1234
输出:
Attaching to process ID 11666, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.25-b02
using thread-local object allocation.
Parallel GC with 4 thread(s)
Heap Configuration: //堆内存初始化配置
MinHeapFreeRatio = 0 //对应jvm启动参数-XX:MinHeapFreeRatio设置JVM堆最小空闲比率(default 40)
MaxHeapFreeRatio = 100 //对应jvm启动参数 -XX:MaxHeapFreeRatio设置JVM堆最大空闲比率(default 70)
MaxHeapSize= 1073741824 (1024.0MB) //对应jvm启动参数-XX:MaxHeapSize=设置JVM堆的最大大小
NewSize = 22020096 (21.0MB) //对应jvm启动参数-XX:NewSize=设置JVM堆的新生代的默认大小
MaxNewSize = 357564416 (341.0MB) //对应jvm启动参数-XX:MaxNewSize=设置JVM堆的新生代的最大大小
OldSize = 45088768 (43.0MB) //对应jvm启动参数-XX:OldSize=<value>:设置JVM堆的老年代的大小
NewRatio = 2 //对应jvm启动参数-XX:NewRatio=:新生代和老生代的大小比率
SurvivorRatio = 8 //对应jvm启动参数-XX:SurvivorRatio=设置新生代中Eden区与Survivor区的大小比值
MetaspaceSize = 21807104 (20.796875MB) // 元数据区大小
CompressedClassSpaceSize = 1073741824 (1024.0MB) //类压缩空间大小
MaxMetaspaceSize = 17592186044415 MB //元数据区最大大小
G1HeapRegionSize = 0 (0.0MB) //G1垃圾收集器每个Region大小
Heap Usage: //堆内存使用情况
PS Young Generation
Eden Space: //Eden区内存分布
capacity = 17825792 (17.0MB) //Eden区总容量
used = 12704088 (12.115562438964844MB) //Eden区已使用
free = 5121704 (4.884437561035156MB) //Eden区剩余容量
71.26801434685203% used //Eden区使用比率
From Space: //其中一个Survivor区的内存分布
capacity = 2097152 (2.0MB)
used = 1703936 (1.625MB)
free = 393216 (0.375MB)
81.25% used
To Space: //另一个Survivor区的内存分布
capacity = 2097152 (2.0MB)
used = 0 (0.0MB)
free = 2097152 (2.0MB)
0.0% used
PS Old Generation
capacity = 52428800 (50.0MB) //老年代容量
used = 28325712 (27.013504028320312MB) //老年代已使用
free = 24103088 (22.986495971679688MB) //老年代空闲
54.027008056640625% used //老年代使用比率
15884 interned Strings occupying 2075304 bytes.
输出存活对象信息 :
jmap -histo:live 1234 | more
jhat 用来分析jmap生成dump文件的命令, jhat内置了应用服务器,可以通过网页查看dump文件分析结果,jhat一般用于离线分析
命令格式: jhap 【options】 【dumpfile】
option参数解释: