写在前面
我们写的代码都是运行在JVM上面的,虽然代码的逻辑我们是知道的,但是JVM对我们来讲就像是一个黑盒。通常情况下会用qps、rt这些指标来反应程序性能和质量,但是在出现性能问题的时候我们怎么取查看到底是哪里处理问题?
jstat
这应该是最常用也是最方便的工具,用法如下:
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]通过option参数可以看到不同的数据,不过大部分都是来看GC的情况。比如:jstat -gcutil 12728 10000 10其他类似的option有:- gcnew
- gcnewcapacity
- gcold
- gcoldcapacity
- gcpermcapacity
- gccause
另外,多数情况下Full GC会跟加载的Class太多有关系,jstat也可以进行查看:
jstat -class 12728 10000 10在运行时,如果有大量的字节码会被编译成本地代码的话,这部分的工作也比较耗时间(Server模式下启动较慢,但是启动之后比Client模式运行的快):jstat -compiler 12728 10000 10
jstat -printcompilation 12728 10000 10
本文介绍如何利用jstat工具监控和诊断Java应用程序在JVM上的性能问题,包括垃圾回收(GC)状态、类加载情况及本地代码编译等关键信息。
5283

被折叠的 条评论
为什么被折叠?



