Linux中查找最耗性能的JAVA代码
在这里总结一下查找Linux、Java环境下最耗CPU性能的代码段的方法。基本上原理就是使用top命令查看最耗cpu的进程和线程(子进程)。使用jstack把java线程堆栈给dump下来。然后,在堆栈信息中查找出对应的代码块。具体操作如下:
一、查找最耗cpu的进程
执行:top
输出:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
root 3320m 689m 10m S 120.5 8.8 : java
root 2694m 21m S 11.1 0.3 :28.65 java
root 2694m 21m S 6.9 0.3 :18.50 java
root 2004m 389m 15m S 1.4 4.9 :47.65 java
root R 1.4 0.0 :00.01 top
root S 0.0 0.0 :02.50 init
root S 0.0 0.0 :00.00 kthreadd
root RT S 0.0 0.0 :00.02 migration/
root S 0.0 0.0 :01.16 ksoftirqd/
root RT S 0.0 0.0 :00.00 watchdog/
这里我们看到最耗cpu的Java进程是:12789
二、jstack堆栈信息保存
进入Java的安装目录(如:/usr/java/jdk1.6.0_34/bin),在bin文件夹中执行:./jstack 12789 > jstackResult.txt 这样,就将堆栈信息保存到jstackResult.txt这个文件中了。jstackResult.txt中的内容大体如下:
三、查出最耗cpu的子进程(java线程)
执行:top -p –H
输出:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
root 3320m 689m 10m S 13.7 8.8 :57.24 java
root 3320m 689m 10m R 2.7 8.8 :57.68 java
root 3320m 689m 10m S 2.7 8.8 :49.73 java
root 3320m 689m 10m S 2.3 8.8 :55.86 java
root 3320m 689m 10m S 2.3 8.8 :50.22 java
root 3320m 689m 10m R 2.3 8.8 :37.94 java
root 3320m 689m 10m R 2.3 8.8 :17.72 java
root 3320m 689m 10m R 2.3 8.8 :18.59 java
root 3320m 689m 10m S 2.3 8.8 :00.05 java
root 3320m 689m 10m S 2.0 8.8 :07.45 java
root 3320m 689m 10m S 2.0 8.8 :12.15 java
root 3320m 689m 10m S 2.0 8.8 :11.94 java
root 3320m 689m 10m R 2.0 8.8 :00.50 java
root 3320m 689m 10m R 2.0 8.8 :24.82 java
root 3320m 689m 10m R 2.0 8.8 :27.09 java
root 3320m 689m 10m R 2.0 8.8 :19.02 java
root 3320m 689m 10m R 2.0 8.8 :40.06 java
找到12789下最耗性能的子进程。top命令使用-p参数来指定进程号,-H参数来显示线程。这里可以看到最耗cpu的进程(java中的线程)是11637。
四、从堆栈信息中查找最耗费性能的代码块
从上面看到,我们用top找出来的pid是十进制的。而dump下来的nid是十六进制的。其实他们是一个东西,只是进制不同。利用printf命令格式化来转换一下进制。
执行:printf %0x
输出:2d99
通过在dump出的堆栈信息中查找,就能找到问题所在了。
Linux中查找最耗性能的JAVA代码的更多相关文章
- Linux中查找最耗CPU的Java代码问题
第一步: 查看消耗CPU最高的进程PID [lolaage@web2 tomcat-ns]$ top top - 13:23:32 up 42 days, 19:11, 3 users, load ...
- Linux中常用的监控性能的命令(sar、mpstat,vmstat, iostat,)详解
Linux中常用的监控性能的命令有: sar:能查看CPU的平均信息,还能查看指定CPU的信息.与mpstat相比,sar能查看CPU历史信息 mpstat:能查看所有CPU的平均信息,还能查看指定C ...
- linux中查找命令find、locate、whereis、which、type区别
linux中查找命令find.locate.whereis.which.type区别 1. find Java代码 find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件.与查询数据库(/ ...
- linux中查找文件属于那个软件包的方法
一.linux中查找文件属于那个软件包的方法 [root@salt prod]# whereis htpasswdhtpasswd: /usr/bin/htpasswd /usr/share/man/ ...
- sar命令,linux中最为全面的性能分析工具之一
sar是System Activity Reporter(系统活动情况报告)的缩写.这个工具所需要的负载很小,也是目前linux中最为全面的性能分析工具之一.此款工具将对系统当前的状态就行取样,然后通 ...
- systemd-analyze – 在Linux中查找系统启动性能统计信息
您是否在使用 systemd 系统和服务管理器,并且您的 Linux 系统需要较长时间才能启动,或者您希望查看系统启动性能的报告? 如果是的话,你已经登陆了正确的地方. 在本文中,我们将向您展示如何使 ...
- linux中查找(find、locate、which、whereis、grep)命令汇总、帮助命令(man、whatis、apropos、info、help)汇总
(一)find命令详解 find:功能:文件搜索: 语法:find[搜索范围][匹配条件]: 只要匹配条件完全符合才可以被显示,使用通配符*匹配条件*则可以显示匹配条件的所有目录,问号?匹配单个字符 ...
- 如何使用find命令在Linux中查找文件
Linux Find命令是Linux系统管理员工具库中最强大的工具之一. Find是一个命令行实用程序,它允许您根据用户给定的表达式搜索目录层次结构中的文件和目录,并对每个匹配的文件应用用户指定的操作 ...
- 在 Linux 中查找和删除重复文件
原文链接:https://www.linuxprobe.com/linux-FSlint.html FSlint同时具有GUI和CLI模式.因此,对于新手来说,这是一个用户友好的工具.FSlint不仅 ...
随机推荐
- PHP加密解密字符串
项目中有时我们需要使用PHP将特定的信息进行加密,也就是通过加密算法生成一个加密字符串,这个加密后的字符串可以通过解密算法进行解密,便于程序对解密后的信息进行处理. 最常见的应用在用户登录以及一些AP ...
- iOS 开发知识小集(1)
iOS 开发知识小集(1) 2015-05-15 iOS大全 (点击上方蓝字,快速关注我们) 一直想做这样一个小册子,来记录自己平时开发.阅读博客.看书.代码分析和与人交流中遇到的各种问题.之前有过 ...
- 11月23日《奥威Power-BI报表集成到其他系统》腾讯课堂开课啦
听说明天全国各地区都要冷到爆了,要是天气冷到可以放假就好了.想象一下大冷天的一定要在被窝里度过才对嘛,索性明天晚上来个相约吧,相约在被窝里看奥威Power-BI公开课如何? 上周奥威公开 ...
- 关于 0xCCCCCCCC
http://xingyunbaijunwei.blog.163.com/blog/static/76538067201281793111474/ http://stackoverflow.com/q ...
- PLSQL 的简单命令之五
--1. 查询和Zlotkey相同部门的员工姓名和雇用日期 select a.last_name,a.hire_date ,b.department_name from employees a,dep ...
- mysql及redis环境部署时遇到的问题解决
redis开启远程访问redis默认只允许本地访问,要使redis可以远程访问可以修改redis.conf打开redis.conf文件在NETWORK部分有说明 解决办法:注释掉bind 127.0. ...
- 让show parameter显示隐含参数(12C)
1.创建视图show_hidden_v$parameter create or replace view show_hidden_v$parameter (inst_id,NUM , NAME , T ...
- java提高篇(九)-----详解匿名内部类
在java提高篇-----详解内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客.在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意的事项.如何初始 ...
- 转:python webdriver API 之cookie 处理
有时候我们需要验证浏览器中是否存在某个 cookie,因为基于真实的 cookie 的测试是无法通过白盒和集成测试完成的.webdriver 可以读取.添加和删除 cookie 信息.webdrive ...
- 01分数规划zoj2676(最优比例,最小割集+二分)
ZOJ Problem Set - 2676 Network Wars Time Limit: 5 Seconds Memory Limit: 32768 KB S ...