Windows系统排查Java代码CPU占用过高的问题
为了演示,先写个死循环代码:
public static void main(String[] args) {
while (true) {
}
}
第一步:定位进程
跑起来之后打开Windows任务管理器,点击 “查看” -> “选择
为了演示,先写个死循环代码:
public static void main(String[] args) {
while (true) {
}
}
第一步:定位进程
跑起来之后打开Windows任务管理器,点击 “查看” -> “选择列” ->勾选PID,这样“进程”界面就可以显示PID了。
如图,CPU占用排第一的java进程PID为9616.
第二步:定位线程
用Windows自带的pslist -dmx pid
命令查看进程的线程信息,结合我们在第一步查询到的PID:
pslist -dmx 9616
返回如下结果:
这里简单解释下各个字段的含义:
Pri: Priority
Tid: umber of Threads(线程编号)
Hnd: umber of Handles
VM: Virtual Memory
WS: Working Set
Priv: Private Virtual Memory
Priv Pk: Private Virtual Memory Peak
Faults: Page Faults
onP: on-Paged Pool
Page: Paged Pool
Cswtch: Context Switches(线程上下文切换次数)
State: 线程状态
如图可以看出编号为8244的线程上下文切换最频繁,说明它分配到的CPU时间片最多,所以CPU占用过高的罪魁祸首就是它了。
(PS:如果dos命令行提示不到pslist命令,需要去微软官方下载,地址:https:///zh-cn/sysinternals/downloads/pslist
下载完直接解压放到C:\Windows\System2就可以了)
第三步:定位代码
先通过Windows自带的计算器把TID转换成十六机制,8244转换成十六机制为204。然后通过jstack -l PID
命令查看线程的详细信息,到TID为204的线程:
可以看到,死循环的那行代码被定位到了。
#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
上传时间: 2025-07-16 08:32:32
推荐阅读
留言与评论(共有 11 条评论) |
本站网友 增值税和消费税 | 21分钟前 发表 |
umber of Threads(线程编号) Hnd | |
本站网友 饮用 | 0秒前 发表 |
Private Virtual Memory Peak Faults | |
本站网友 那地 | 17分钟前 发表 |
(PS:如果dos命令行提示不到pslist命令,需要去微软官方下载,地址:https | |
本站网友 郑州商铺 | 2分钟前 发表 |
(PS:如果dos命令行提示不到pslist命令,需要去微软官方下载,地址:https | |
本站网友 保山美食 | 10分钟前 发表 |
线程状态 如图可以看出编号为8244的线程上下文切换最频繁,说明它分配到的CPU时间片最多,所以CPU占用过高的罪魁祸首就是它了 | |
本站网友 600gao | 13分钟前 发表 |
Private Virtual Memory Peak Faults | |
本站网友 育秀实验学校 | 28分钟前 发表 |
Page Faults onP | |
本站网友 思源中文 | 28分钟前 发表 |
Priority Tid | |
本站网友 如何护理 | 27分钟前 发表 |
Private Virtual Memory Peak Faults | |
本站网友 美国时代华纳 | 12分钟前 发表 |
Private Virtual Memory Priv Pk |