JVM参数

Linux下查看日志用到的常用命令 - myseries - 博客园

VM参数

标准选项 - (所有的实现都支持)

非标准参数 -X  (特定的hotspot支持)  例如:-Xms  

高级参数-XX(开发人员调整)

GC打印:+PrintGCDetails

java -XX -PrintflagsFinal -version  显示所有高级参数

1、jps(JVM Process Status Tool):查看正在运行的java虚拟机进程

jps命令相当于Linux下的ps命令,只不过它只列出Java进程

jps:输出java进程id和Main函数名称

jps -m :
jps -l :输出主函数的完整路径
jps -v:输出传递给java虚拟机的参数

2、jstat(JVM Statistics Mornitoring Tool):查看虚拟机运行时信息

jstat可以查看Java虚拟机各种运行状态信息,可以通过它查看JAVA虚拟机进程中的类装载、堆内存、垃圾收集、JIT编译等运行数据

jstat  -class 19064

jstat -gc 19064

jstat -gc 1612 500 5  500ms 刷一次

jstat -<options> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
 options:包含以下选项

-gc:显示与GC相关信息
-gccause:显示垃圾回收期相关信息,同时显示最后一次垃圾回收的原因
-gccapacity:显示各个代的容量和使用情况
-gcnew:显示新生带信息
-gcnewcapacity:显示年轻代大小和使用情况
-gcold:显示老年代信息
-gcoldcapacity:显示老年代大小
 -t:在输出信息前加上一个Timestamp列,显示程序的运行时间

 vmid:与操作系统的PID是一致的

 interval:用于指定输出统计数据的周期,单位为毫秒

 count:用于指定输出几次数据

使用示例:

需要每500毫秒查询一次PID为1612垃圾回收情况,一共查询5次,那命令如下:

jstat -gc 1612 500 5
输出GC相关信息:

S0C,S1C:S0区和S1区大小,KB
S0U,S1U:S0区和S1区已使用大小,KB
EC,OC,MC:eden区,old老年代区,方法区大小,KB
EU,OU,MU:eden区,old老年代区,方法区已使用大小,KB
CCSC,CCSU:压缩类空间大小,压缩类空间使用大小,KB
YGC,FGC:年轻代GC,Full GC次数
YGCT,FGCT:年轻代GC,FullGC耗时
GCT:GC总耗时
 

3、jinfo(Configuration Info For Java):实时查看和调整虚拟机的各项参数

jinfo [option] <pid>
options:包含以下选项

-flags :打印VM参数
-sysprops:打印Java相关系统参数
<no option>:打印所有参数

jinfo -flag PrintGC 19064

4、jmap(Memory Map For Java):查看或导出堆快照信息

-XX HeapDumpOnOutOfMemoryError 参数开启

HeapDumpPath

jmap可以生成Java程序的堆的dump文件,也可以查看堆内存对象的统计信息,查看ClassLoader的信息以及finalizer队列

jmap [option] vmid
options:包含以下选项

-histo:显示堆中对象统计信息,包括类、实例数量和合计容量
-dump:生成Java堆快照。格式为:-dump:[live,]format=b,file=<filename>,其中live子参数说明是否只dump出存活的对象
使用示例:

生成PID为1612前20名的对象统计信息,并将结果写到/root/logs/jmapresult.txt

jmap -histo pid | head -20 > /root/logs/jmapresult.txt 

jmap -dump:format=b,file=/root/logs/heap.hprof 1612  (生成PID为1612的当前堆快照(生成的结果可以使用专门的工具进行分析))

jmap -heap 19064                         (显示堆信息)
jmap -histo:live 19064 | head 20  (进程里面数量排名,只显示存活的,前20的)

jmap -dump:live , format=b,file=chen.bin 19064



5、jstack(Stack Trace For Java):查看虚拟机当前时刻的线程快照

线程快照就是当前虚拟机内每一个线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等都是导致线程长时间停顿的原因。

 jstack [option] vmid
options:包含以下选项

  -l :除堆栈外,显示关于锁的附加信息

使用示例:

生成PID为1612线程堆栈信息(会包含锁信息),并将结果写到/root/logs/jstack.txt

jstack -l 1612 > /root/logs/jstack.txt

处理死锁

jstack 19064 

如何用命令定位导致CPU飙升(死循环,死锁..)所在代码行数?_u012516914的专栏-CSDN博客

6、Jconsole

7、visualvm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值