我是靠谱客的博主 忧虑电源,最近开发中收集的这篇文章主要介绍java堆内存jstat_java运行负载观测jstack、jmap、jstat,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

jstack

——发现线程正停留在哪行代码,定位到线程堆栈--进而到具体代码,性能调优中使用得非常多,尤其运行的java程序呈现hung时,可观察到jvm中当前所有线程的运行情况和线程当前状态。通过top

-Hp 进程Id 来获得当前进程中线程状态和线程Id.然后转换成16进制printf

"%xn"​

jstack jstack -F # 有时候线程挂起的时候要加上-F参数才能把信息dump处理

配合使用ps、top、printf。   jstack 进程ID

> jstack.log,然后搜索BLOCKED,定位到引起死锁的地方

jmap

——提取进程内存信息,分析OOM原因

jmap -histo:live 20849 | sort -nrk 2 |

more 查看堆内存中的对象数目、大小统计

jmap -histo:live 6406 | grep yourname | wc -l​

搜某对象堆内存中对象数目、大小统计

jmap

-dump:format=b,file=HeapDump_youname.bin​

#输出堆信息jmap -heap

使用jmap转换core.pid文件时,当文件格式比较大时(>2G)就不能执行成功(转换3G文件时没成功)而报出Error

attaching to core file: Can't attach to the core file

查过sun的bug库中,这bug还没修复,可能由于32位下用户进程寻址大小限制在2G的范围内引起的,在64位系统和64位jdk版本中,转换3G文件应该没有什么大的问题(如运行在64位JVM上,可能需要指定-J-d64)。

jhat

简单分析内存中对象情况,与jmap搭配使用

#读取dump文件,生成报告并启动WEB服务器,默认端口为7000

jhat -J-mx768m -port 8999youport -stack false

./HeapDump_sjw.log

#

访问报告,需要打开浏览器访问其8999youport端口

jstat

jstat -gcutil pid 2000 10 # 每2秒输出一次内存情况,连续输出10次

最后

以上就是忧虑电源为你收集整理的java堆内存jstat_java运行负载观测jstack、jmap、jstat的全部内容,希望文章能够帮你解决java堆内存jstat_java运行负载观测jstack、jmap、jstat所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(87)

评论列表共有 0 条评论

立即
投稿
返回
顶部