- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat等小巧的工具,本博客希望能起抛砖引玉之用,让大家能开始对JVM性能调优的常用工具有所了解。
? ? 现实企业级Java开发中,有时候我们会碰到下面这些问题:
OutOfMemoryError,内存不足
内存泄露
线程死锁
锁争用(Lock Contention)
Java进程消耗CPU过高
......
? ? 这些问题在日常开发中可能被很多人忽视(比如有的人遇到上面的问题只是重启服务器或者调大内存,而不会深究问题根源),但能够理解并解决这些问题是 Java程序员进阶的必备要求。本文将对一些常用的JVM性能调优监控工具进行介绍,希望能起抛砖引玉之用。本文参考了网上很多资料,难以一一列举,在此 对这些资料的作者表示感谢!关于JVM性能调优相关的资料,请参考文末。
A、?jps(Java Virtual Machine Process Status Tool) ? ? ?
? ? jps主要用来输出JVM中运行的进程状态信息。语法格式如下:
1
jps?[options]?[hostid]
? ? 如果不指定hostid就默认为当前主机或服务器。
? ? 命令行参数选项说明如下:
1
-q?不输出类名、Jar名和传入main方法的参数
2
-m?输出传入main方法的参数
3
-l?输出main类或Jar的全限名
4
-v?输出传入JVM的参数
? ?比如下面:
1
root@ubuntu:/#?jps?-m?-l
2
2458?org.artifactory.standalone.main.Main?/usr/local/artifactory-2.2.5/etc/jetty.xml
3
29920?com.sun.tools.hat.Main?-port?9998?/tmp/dump.dat
4
3149?org.apache.catalina.startup.Bootstrap?start
5
30972?sun.tools.jps.Jps?-m?-l
6
8247?org.apache.catalina.startup.Bootstrap?start
7
25687?com.sun.tools.hat.Main?-port?9999?dump.dat
8
21711?mrf-center.jar
?
B、?jstack
? ? jstack主要用来查看某个Java进程内的线程堆栈信息。语法格式如下:
1
jstack?[option]?pid
2
jstack?[option]?executable?core
3
jstack?[option]?[server-id@]remote-hostname-or-ip
? ? 命令行参数选项说明如下:
1
-l?long?listings,会打印出额外的锁信息,在发生死锁时可以用jstack?-l?pid来观察锁持有情况
2
-m?mixed?mode,不仅会输出Java堆栈信息,还会输出C/C++堆栈信息(比如Native方法)
? ? jstack可以定位到线程堆栈,根据堆栈信息我们可以定位到具体代码,所以它在JVM性能调优中使用得非常多。下面我们来一个实例找出某个Java进程 中最耗费CPU的Java线程并定位堆栈信息,用到的命令有ps、top、printf、jstack、grep。
? ? 第一步先找出Java进程ID,我部署在服务器上的Java应用名称为mrf-center:
1
root@ubuntu:/#?ps?-ef?|?grep?mrf-center?|?grep?-v?grep
2
root?????21711?????1??1?14:47?pts/3????00:02:10?java?-jar?mrf-center.jar
? ? 得到进程ID为21711,第二步找出该进程内最耗费CPU的线程,可以使用ps -Lfp pid或者ps -mp pid -o THREAD, tid, time或者top -Hp pid,我这里用第三个,输出如下:
? ? TIME列就是各个Java线程耗费的CPU时间,CPU时间最长的是线程ID为21742的线程,用
1
printf?%x\n?21742
? ? 得到21742的十六进制值为54ee,下面会用到。 ? ?
? ? OK,下一步终于轮到jstack上场了,它用来输出进程21711的堆栈信息,然后根据线程ID的十六进制值grep,如下:
1
root@ubuntu:/#?jstack?21711?|?grep?54ee
2
PollIntervalRetryS
您可能关注的文档
- EHS意识与领导力.ppt
- FFI汽车尾气的危害.ppt
- FKQ-B+二级系统通断控制器使用说明书20150309.doc
- f 价值与价值观(ok).ppt
- FDD LTE载波聚合培训教材.pptx
- Flash CS4第2课 基本绘图.ppt
- Flash ActionScript 3.0动画教程第4章.ppt
- FLASH_CS4课件L5制作简单的动画.ppt
- Flash动画制作期末模拟练习题.doc
- FLASHCS5--王栋--L6时间轴的应用.ppt
- 主题课程整理大班上.doc
- 2026人教版小学语文三年级上册期末综合试卷3套(打印版含答案解析).docx
- 2026人教版小学语文四年级下册期末综合试卷3套(打印版含答案解析).docx
- 2026人教版小学二年级上册数学期末综合试卷精选3套(含答案解析).docx
- 2026人教版小学语文四年级上册期末综合试卷3套(含答案解析).docx
- 2026人教版小学二年级下册数学期末综合试卷3套(打印版含答案解析).docx
- 2026年地理信息行业年终总结汇报PPT.pptx
- 板块四第二十一单元封建时代的欧洲和亚洲 中考历史一轮复习.pptx
- 中考历史一轮复习:板块四第二十单元古代亚、非、欧文明+课件.pptx
- 第二次工业革命和近代科学文化中考历史一轮复习.pptx
最近下载
- 福建农林大学2021-2022学年《国际金融学》期末考试试卷(A卷)附标准答案.docx
- 正文中参考文献的标注.doc VIP
- 防波堤与护岸设计规范2020.pdf VIP
- 铝粉加工铝锭合同.docx
- IQC进料检验流程.pptx VIP
- 给水排水工程钢筋混凝土水池结构设计规程 CECS 138:2002.pdf VIP
- 2024 年秋季国家开放大学《公共管理学》 形考任务参考答案 形考任务一.docx VIP
- 2024-2025学年深圳市南山区八年级上册期末语文试卷含答案.pdf VIP
- 2024年元气森林行业洞察报告及未来五至十年预测分析报告.docx
- 2022工作场所空气中硫化氢的亚甲基蓝分光光度法.docx VIP
原创力文档


文档评论(0)