文档章节

linux中找到最耗CPU的那段Java代码

laichendong
 laichendong
发布于 2014/06/25 09:27
字数 457
阅读 200
收藏 1
在这里总结一下查找linux,sun JDK环境下最耗CPU性能的java代码段的方法。基本上原理就是使用top命令查看最耗cpu的进程和线程(子进程)。使用jstack把java线程堆栈给dump下来。然后,在堆栈信息中查找出对应的代码块。具体操作如下:

一、使用top查找出最耗cpu的进程号(PID)

2013011622221320130116215224(提示:可以按shift+p来按cpu排序。) 这里我们看到最耗cpu的进程是:17315

二、使用jstack dump对应PID的堆栈信息保存备查

20130116215630 这没什么好说的。有时候需要加-F (强制选项)。另外,在jdk1.6.0.23之前,有一个bug。无法用这种方法dump下详细的堆栈信息。只有线程号。 dump下来的文件内容大概长这样:20130116220414几个比较有用的信息包括 线程名称、nid(native id, 一会儿会用到)、线程状态

三、再次使用top查出对应PID中最耗cpu的子进程(java线程)

2013011621582220130116215957top命令使用-p参数来指定进程号,-H参数来显示线程。这里可以看到最耗cpu的进程(java中的线程)是17316

四、从dump下来的堆栈信息中查找耗费性能的代码块

从上面开到,我们用top找出来的pid是十进制的。而dump下来的nid是十六进制的。其实他们是一个东西。只是进制不同。于是我们利用printf命令格式化来转换一下进制(当然,也可以用其他方式): 20130116221543   20130116221709 通过在vim中查找,就能找到问题所在了。 :D 20130116221855

好了,基本就是这样一个步骤,对于分析线上问题还是有一定帮助的。have fun!

© 著作权归作者所有

共有 人打赏支持
laichendong
粉丝 10
博文 85
码字总数 71483
作品 0
朝阳
程序员
Linux下如何对tomcat Java线程进行分析?

在生产环境(Linux)有什么办法知道当前某个线程的运行情况,比如是不是挂住了,是不是吃了好多cpu和内存。 以下是针对tomcat上的应用的. 其他的java程序, 只要你能触发他的thread dump并且拿到...

DongHenry
2013/09/26
0
0
Java Tomcat vs PHP CLI Server 性能对比

测试环境: Ubuntu 14.04 with i5-3230M Tomcat 8.0.5 with 64bit jre1.7.0_55 PHP 5.5.8 with Zend OPcache v7.0.3-dev 测试脚本: 显示当前服务器时间 Java Tomcat: t.jsp <%@ page session=......

eechen
2014/09/22
0
34
LINUX类主机JAVA应用程序占用CPU、内存过高分析手段

转载声明:本文为DBA+社群原创文章,转载必须连同本订阅号二维码全文转载,并注明作者名字及来源:DBA+社群(dbaplus)。 做为一个IT运维人员,通常在运维过程中会遇到各种各样的问题,系统问...

丁启良
2015/12/04
0
0
Java基础-环境变量设置及Java命令行使用

一、Java环境变量设置 windows 下配置JDK环境变量: 1. 安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择安装目录为D:javajdk1.5.008; 2. 安装完成后,右击“我的电脑”,点击“属...

陶邦仁
2012/11/11
0
0
Java应用性能分析工具:async-profiler

作者: 一字马胡 转载标志 【2017-12-15】 更新日志 厉害的内容 及时对项目进行性能检测,并且分析检测结果数据,发现热点代码是一项充满意义的工作,因为可能因为某一段热点代码会拖慢整个系...

疼丸李白
2017/12/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

造谣造到t-io老巢了

只发当事人的截图,不发表评论,以免有引导嫌疑 PS1:截图是由不同的人发过来的 PS2:本人已经不在此微信群 PS3:图3是2018-09-23的t-io官方群的一个发言小统计,有助于让人认识到他们的其中...

talent-tan
56分钟前
67
0
heartbeat 资源

drbd+apache+heartbeat : http://blog.51cto.com/11838039/1827901 heartbeat双机热备的架设 : http://blog.51cto.com/11838039/1827560 对heaetbeat的深一步认识 : http://blog.51cto.co......

寰宇01
今天
4
0
Spring 转换 model 为 json 时增加属性

缘起 目前的项目中有个需求是在附件对象转换成 json 时增加个 url 属性,以前的方式是在返回附件对象或列表时候做一次统一处理,这次想看看 spring 或者 jackson fasterxml 是否自带类似功能...

郁也风
今天
4
0
10大PHP比特币开源项目

如果你是一个Phper,如果你希望学习区块链,那么本文列出的 10个开源的Php比特币项目,将有助于你了解在自己的应用中 如何加入对比特币的支持。 如果你希望快速掌握使用Php对接比特币钱包的方...

汇智网教程
今天
5
0
springclould feign客户端添加全局参数

用springclould feign作为调用服务的客户端,一般来说参数可以写在feignclient的方法参数里 有时需要所有feign请求都统一添加一些参数,例如token用于鉴权等,可以这样做: 添加一个配置类,...

canneljls
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部