网站首页 > java教程 正文
Linux环境下,当发现java进程占用CPU资源很高,且又要想更进一步查出哪一个java线程占用了CPU资源时,按照以下步骤进行查找:
(一):通过【 top -p12377 -H】 查看java进程的有哪些线程的运行情况;(二):和通过【jstack 12377 > stack.log】生成Java线程的dump详细信息;
- 先用top命令找出占用资源厉害的java进程id,如图:# top
- 如上图所示,java的进程id为’52554′,接下来用top命令单独对这个进程中的所有线程作监视:
- ***\*1\****top -p52554 -H# top视图里面里面可以通过快捷键依次b ,x高亮显示top的列找出需要的线程,默认CPU排序,Shift+可以左右移动高亮排序的列;
- 如图:(这时就看出来哪个java线程CPU高,哪个线程内存用的多)
- 如上图所示,linux下,所有的java内部线程,其实都对应了一个进程id,也就是说,linux上的sun jvm将java程序中的线程映射为了操作系统进程;我们看到,占用CPU资源最高的那个进程id是’15417′,这个进程id对应java线程信息中的’nid’(‘n’ stands for ‘native’);
- (1)要想找到到底是哪段具体的代码占用了如此多的资源,先使用jstack打出当前栈信息到一个文件里, 比如stack.log:
- python -c"print hex(9757)"然后记住二进制的号
- cat stack.log|grep 二进制的号
- 1***\*jstack\** \**52554\** \**>\** \**stack\**\**.\**\**log\****
- 然后使用’jtgrep’脚本把这个进程号为’9757′的java线程在stack.log中抓出来:
- 1jtgrep 9757 stack.log
- 其中,’jtgrep’是自己随便写的一个shell脚本:
- 1#!/bin/sh3nid=python -c“”print hex($1)”““4grep -i $nid $2
- 道理很简单,就是 把’9757′转换成16进制后,直接grep stack.log;可以看到,被grep出的那个线程的nid=0x3c39,正好是15417的16进制表示。
至此关于Linux系统中查看java线程的具体方法分享结束,大家如有疑问欢迎在评论区留言。
猜你喜欢
- 2024-10-20 编程语言第一:JAVA——认识Linux操作系统
- 2024-10-20 「Linux」05节-服务器状态查看(linux系统查看服务器配置命令)
- 2024-10-20 linux系统上安装java1.7.0.80(linux系统上安装java1.7.0.80怎么解决)
- 2024-10-20 Linux查看硬件信息超强命令sar,以及可视化工具ksar
- 2024-10-20 linux 安装基础软件-jdk-mysql-tomcat
- 2024-10-20 利用java远程调用linux命令或shell脚本
- 2024-10-20 linux find 模糊查找文件(名称,大小,时间,新旧)
- 2024-10-20 oracle常见错误问题汇总—1(oracle错误大全)
- 2024-10-20 Linux常用查找命令大全,再也不用到处百度了
- 2024-10-20 顶级安全专家带你解决linux初学问题
你 发表评论:
欢迎- 07-21如何将 iPhone 中的联系人导出到 Excel/CSV?
- 07-21sql查询的字段数据中有逗号。放到csv文件会分开,如何解决?
- 07-21在 WebAPI 里生成 csv zip 文件(webapi怎么发布在iis上)
- 07-21如何把csv格式转换成Excel格式(csv格式怎么转换)
- 07-21如何将高程导出为XYZ或CSV高程点(如何将高程数据导入cad)
- 07-21使用python把csv汇总成excel(python怎么将csv文件中的列存入列表)
- 07-21解决PHP导出CSV文件中文乱码问题(php导出excel文件)
- 07-21使用vba将Excel 文件转成 CSV 文件
- 最近发表
-
- 如何将 iPhone 中的联系人导出到 Excel/CSV?
- sql查询的字段数据中有逗号。放到csv文件会分开,如何解决?
- 在 WebAPI 里生成 csv zip 文件(webapi怎么发布在iis上)
- 如何把csv格式转换成Excel格式(csv格式怎么转换)
- 如何将高程导出为XYZ或CSV高程点(如何将高程数据导入cad)
- 使用python把csv汇总成excel(python怎么将csv文件中的列存入列表)
- 解决PHP导出CSV文件中文乱码问题(php导出excel文件)
- 使用vba将Excel 文件转成 CSV 文件
- python爬虫25 | 爬取的数据怎么保存?CSV了解一下
- MySQL 导出数据(mysql 导出数据 判断成功)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)