Java 性能优化实战记录(1)---定位并分析耗cpu最多的线程
1) jps
列出相关的java进程, 以及对应的pid
也可以使用如下命令来尝试
ps aux | grep java --color
2) top -Hp <pid>
按ctrl+t, 按时间消耗来进行排序
同等的命令替换如下所示
ps -eLf | awk '$2 ~/<pid>/ {print "pid:", $2, " lwp:", $4, " pcpu:", $5}' | sort -k6nr
ps -eLf | head -n 1
具体的field含义,需要再check一下

3) jstack <pid>
对java进程进行一次threads dump

同等命令:
kill -3 <pid>, 也能实现类似的效果
signo 3 == SIGQUIT
kill -l 列出信号列表

4) printf "%x\n" <thread_id>
jstack进行线程dump之后, 需要进制转化才能对应上, 因为每个线程id(对应field为nid)是16进制数, 而linux获取的线程id是10进制
那如何把10进制转化为16进制, 以及各种转换
printf "%x\n" <number>

5) 缺憾
在linux下,Thread.currentThread().getId(), 并不与线程id保持一致
public class Simple {
public static void main(String[] args) {
System.out.println("threadId is : " + Thread.currentThread().getId());
}
}
/*
输出结果如下所示:
threadId is : 1
*/
另一方面,线程ID=进程ID+内部线程对象ID并不成立,
参考: blog.csdn.net/heyetina/article/details/6633901
如何在java代码中获取进程process id, 实现方法如下所示:
参考: rednaxelafx.iteye.com/blog/716918
Java 性能优化实战记录(1)---定位并分析耗cpu最多的线程的更多相关文章
- Java 性能优化实战记录(3)--JVM OOM的分析和原因追查
前言: C/C++的程序员渴望Java的自由, Java程序员期许C/C++的约束. 其实那里都是围城, 外面的人想进来, 里面的人想出去. 背景: 作为Java程序员, 除了享受垃圾回收机制带来的便 ...
- Java 性能优化实战记录(2)---句柄泄漏和监控
前言: Java不存在内存泄漏, 但存在过期引用以及资源泄漏. (个人看法, 请大牛指正) 这边对文件句柄泄漏的场景进行下模拟, 并对此做下简单的分析.如下代码为模拟一个服务进程, 忽略了句柄关闭, ...
- 【转】如何快速定位JVM中消耗CPU最多的线程?
[转]如何快速定位JVM中消耗CPU最多的线程? https://mp.weixin.qq.com/s?__biz=MzIwMzg1ODcwMw==&mid=2247487802&id ...
- 《Linux 性能优化实战—倪朋飞 》学习笔记 CPU 篇
平均负载 指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,即平均活跃进程数 可运行状态:正在使用CPU或者正在等待CPU 的进程,也就是我们常用 ps 命令看到的,处于 R 状态 (Run ...
- 如何快速定位JVM中消耗CPU最多的线程? Java 性能调优
https://mp.weixin.qq.com/s/ZqlhPC06_KW6a9OSgEuIVw 上面的线程栈我们注意到 nid 的值其实就是线程 ID,它是十六进制的,我们将消耗 CPU 最高的线 ...
- 如何快速定位JVM中消耗CPU最多的线程?
第一步.先找出Java的进程PID ps -ef | grep 进程名关键字 这里假设找到的PID是:12345 第二步.找出该进程内最消耗CPU的线程 top -Hp log4x R :11.7 ...
- 《Java性能优化权威指南》
<Java性能优化权威指南> 基本信息 原书名:Java performance 原出版社: Addison-Wesley Professional 作者: (美)Charlie Hunt ...
- 推荐:Java性能优化系列集锦
Java性能问题一直困扰着广大程序员,由于平台复杂性,要定位问题,找出其根源确实很难.随着10多年Java平台的改进以及新出现的多核多处理器,Java软件的性能和扩展性已经今非昔比了.现代JVM持续演 ...
- Golang 性能优化实战
小结: 1. 性能查看工具 pprof,trace 及压测工具 wrk 或其他压测工具的使用要比较了解. 代码逻辑层面的走读非常重要,要尽量避免无效逻辑. 对于 golang 自身库存在缺陷的,可以寻 ...
随机推荐
- 文件浏览器及数码相框 -2.3.2-freetype_arm-2
显示多行文字 两行文字左边对齐 简单使用两个循环显示两行字体 根据上一行字体的宽度来进行下一行左边的计算 #include <sys/mman.h> #include <sys/ty ...
- 安装svnx2出现 Make sure an svn tool (≥ v1.6) is present in the folder: “/usr/bin”
安装svnx2出现 Make sure an svn tool (≥ v1.6) is present in the folder: “/usr/bin” 是因为svnx2需要用到svn的地址,修改为 ...
- centos7 学习1 KDE配置中文
安装kde桌面后没有中文,可以用以下方法配置中文 #yum list kde*chinese 会显示可以安装的包,我的显示如下 kde-l10n-Chinese.noarch -.fc14 @upda ...
- Android计算时间差
想要写个根据消耗时长来确定开始结束时间的小工具,发现Android处理时间上有点累,可能是我没找到合适的方法吧,先把我的解决办法贴出来,有好的解决方法还希望提醒一下: 1.根据时间字符串获取毫秒数 p ...
- 5个最顶级jQuery图表类库插件-Charting plugin
转载: http://www.cnblogs.com/chu888chu888/archive/2012/12/22/2828962.html 作者:Leonel Hilario翻译:Terry li ...
- 基于K2的集成供应链流程解决方案
基于K2的集成供应链流程解决方案http://www.k2software.cn/zh-hans/scm-solution 一.详细功能模块 需求管理模块多渠道管理.需求计划.需求感知与传递市场营销及 ...
- Codeforces Round #326 (Div. 2)-Duff and Meat
题意: Duff每天要吃ai千克肉,这天肉的价格为pi(这天可以买好多好多肉),现在给你一个数值n为Duff吃肉的天数,求出用最少的钱满足Duff的条件. 思路: 只要判断相邻两天中,今天的总花费 = ...
- android 原生dialog对话框
http://www.cnblogs.com/xiaoluo501395377/p/3419398.html
- Openstack Swift中间件编写
关于openstack swift的资料可以看这里,这里还有这里. 准备环境 从零开始接触的同学可以先从swift的all in one部署开始学习,在本机搭建好swift环境就可以进行简单的测试了. ...
- Thread IsBcakgroud
C#中,Thread类有一个IsBackground 的属性.MSDN上对它的解释是:获取或设置一个值,该值指示某个线程是否为后台线程.个人感觉这样的解释等于没有解释. .Net中的线程,可以分为后台 ...