您现在的位置是:首页 > 编程 > 

Windows系统排查Java代码CPU占用过高的问题

2025-07-17 12:06:44
为了演示,先写个死循环代码: 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组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1107640.html

相关标签:无
上传时间: 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