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
最新文章
- android文件的写入与读取---简单的文本读写context.openFileInput() context.openFileOutput()
- [LeetCode] The Skyline Problem 天际线问题
- 关于MySQL 的LEFT JOIN ON的问题
- 基于.net mvc 的供应链管理系统(YB-SCM)开发随笔
- R包igraph探究
- 字符串截取函数--C语言(转)
- Spring 之autowired
- HTML统一资源定位器
- 【C语言】重定向和文件
- apache2.2+tomcat配置[转]
- UEFI+GPT下安装Win10+Ubuntu16.04双系统
- DHU--1247 Hat’s Words &;&; HiHocder--1014 Trie树 (字典树模版题)
- Centos 6.5 freeswitch 编译mod_shout
- canvas元素绘制太极图
- Luogu P1318 积水面积
- Confluence 6 为空间赋予公共访问
- (网络流 模板 Dinic) Drainage Ditches --POJ --1273
- Java对于表达式中的自动类型提升
- 关于service相关知识的认识
- 【题解】Matrix BZOJ 4128 矩阵求逆 离散对数 大步小步算法
热门文章
- jsp标签之<;%%>;和<;%!%>;
- 解析网络json数据,模拟美团界面显示。
- VS2010静态编译生成.exe可执行文件
- 第一个servlet小例子
- svn自动更新
- struts2 文件的上传下载 表单的重复提交 自定义拦截器
- Java 类的高级特征2
- hdu 1031 (partial sort problem, nth_element, stable_partition, lambda expression) 分类: hdoj 2015-06-15 17:47 26人阅读 评论(0) 收藏
- 《Java中方法的参数传递方式只有一种:值传递》
- 团队SCRUM会议(第一次)