温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

JVM监控命令

发布时间:2020-07-30 21:06:35 来源:网络 阅读:298 作者:爱与梦想 栏目:软件技术

JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole,还有jps,jmap,jstat,jstack,jhat等小工具。


1. jps(Java Virtual Machine Process Status Tool)  

jps -m -l   列出JVM中运行的进程状态信息(这里可以获取某个进程的pid, 供后续命令使用)


2. jstat

jstat -gcutil pid 10s 3   对堆内存的使用情况、gc信息等进行实时的命令行统计


3. jstack  

查看某个Java进程内的线程堆栈信息。

jstack可以定位到线程堆栈,根据堆栈信息我们可以定位到具体代码,所以它在JVM性能调优中使用得非常多。

使用方法参见:6. 热点CPU


4. jmap

生成堆内存快照

jmap -heap pid  查看进程堆内存信息,了解即可

jmap -dump:format=b,file=xxx.hprof pid    把进程内存使用情况dump到文件中。Dump文件是进程的内存镜像

jmap -dump:live,format=b,file=xxx.hprof pid   统计存活的对象信息

dump出来的文件可以用MAT、VisualVM等工具查看,也可以用jhat查看


5. jhat

查看dump出来的文件

jhat -port 9998 xxx.hprof

然后就可以在浏览器中输入主机地址:9998查看了,比如:http://localhost:9998

不推荐,因为有的文件很大,打开会很慢,看起来也费劲,推进用MAT分析


6. 热点cpu   

cpu占用率持续的比较高

定位步骤:

jps -m -l                   列出正在运行的进程----这里是否用top命令更好一些?top才能看出谁占用cpu最高                       

top -H -p pid           找出该进程内最耗费cpu的线程

printf "%x\n" tid      线程id转化为16进制

jstack pid | grep 转化为16进制的tid -A 50

备注1:展示的信息中,重点关注自己编写的代码,截图给开发

备注2:有可能一次jstack不能捕捉到需要的信息,那么需要多次执行,因为抓的是那一瞬间的状态

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI