java程序cpu突然飚高_windows下揪出java程序占用cpu很高的线程 并找到问题代码

windows下揪出java程序占用cpu很高的线程 并找到问题代码

windows下揪出java程序占用cpu很高的线程 并找到问题代码

今天开启个项目后登陆后没过多久后发现,页面慢的很,而且电脑声音响的很,打开任务管理器看了下发现cpu占用高达100%

843d5e1b211468a2388b40e5eeb8be40.png

系统是win2010

所以在windows平台上要找出到底是哪个线程占用的cpu还不那么容易,linux用top就简单多了

最后的解决方法:

1.找到java进程对应的pid。

找pid的方法是:打开任务管理器,找到详情中的java.exe 找到其pID

46b813477949e4767923d7f07e1dd67a.png

2.然后把java进程导出快照。直接运行命令。

jstack -l 3468> c:/3468.stack

c7d0fb014f72e68b63d8b3d0ebfba90b.png

我这里是指定把java所有的信息导出到e盘的3468.stack的文件里。

3.在windows下只能查看进程的cpu占用率,要查看线程的cpu占用率要借助其他的工具,我这里用的是微软提供的 Process Explorer v15.3

下载地址http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

https://pan.baidu.com/s/1hQkdsiv5jJCP6trcqZHc6A  百度提取码 2z5h

下载完后解压运行

右键点击需要查看的进程---properties

847b77eb25f7e7a3040d1f73e2487887.png

45a23ca348a57d13fb016b261e424a44.png

4.然后选择 Threads 选项卡,找到占用cpu的线程的tid,比如我这里是 12464的线程

5.把pid转换成16进制,我这里直接用系统自带的计算器转换,置于为什么要转换,是因为先前用jstack导出的信息里面线程对应的tid是16进制的。

83a843846445e8381c5f50e099c78980.png

最后得到的线程pid的16进制的值为 306b

6.在 e盘的3468.stack文件中查找 306b

8655c0055143b1dbd590efdbe3c99540.png

然后在代码里面找到server.java

ac51722ecf6da0de4897a12dccec3fd3.png

注释掉这段代码后

cpu就会到了正常

原文:https://blog.csdn.net/hexin373/article/details/8846919

windows下揪出java程序占用cpu很高的线程 并找到问题代码相关教程

Java的循环语句

Java的循环语句 循环语句将一段代码或程序重复执行。 循环语句在程序设计中用来描述有规则重复的流程。循环语句总共有三种常见的形式 for 语句 while 语句 do/while语句 while 循环语句 while语句语法结构如下 while(循环条件){ 执行语句 ---- } 根据条件判

Java的分支语句

Java的分支语句 分支语句又称 条件语句 条件语句使部分程序可根据某些表达式的值被 有选择地执行 。Java编程语言支持双路 if和多路 switch 分支语句。 If-else语句 在 Java编程语言中 if ()用的是一个布尔表达式 而不是数字值. if语句形式1 if(boolean类型表

Java流程控制结构

Java流程控制结构 一、概念类型 Java程序通过控制语句来控制方法的执行流程,从而实现特定的功能 Java中的流程控制结构主要有三种: 顺序结构; 选择结构; 循环结构 。 三种结构的结合使用可以解决任何复杂问题。 二、流程表示——程序流程图 流程图的基本

java中的变量及其转换

java中的变量及其转换 java中的变量 变量或变数,是指没有固定的值,可以改变的数。变量以非数字的符号来表达,一般用拉丁字母。变量是常量的相反,变量的用处在于能一般化描述指令的方式。 从本质上讲, 变量其实是内存中的一小块区域,使用变量名来访问这

Java 注解和反射详解

Java 注解和反射详解 注解 什么是注解? Annotation 是从 JDK 1.5 开始引入的新技术 Annotation 的作用 不是程序本身,可以对程序作出解释(这一点和注释没什么区别) 可以被其它程序(比如:编译器等)读取 Annotation 的格式 注解是以 “@注释名” 在代码中

java基础--异常处理

java基础--异常处理 为什么80%的码农都做不了架构师? 一、异常概括 java 异常的体系架构如下所示: Error 不可恢复错误通常为虚拟机产生,处理与否不能恢复错误,其及子类都属于unchecked程序中不用显式捕获处理 RuntimeException 运行期出现的异常,可以捕

深入理解JavaScript中的事件

在本文中,我们将讨论事件处理程序、事件监听器和事件对象。我们还将介绍三种不同的处理事件的方法,以及一些最常见的事件。通过了解事件,您将能够为用户提供更具交互性的web体验。 事件是发生在浏览器中的操作,可以由用户或浏览器本身发起。以下是一些发

golang实现windows服务器上文件夹的定时备份

golang实现windows服务器上文件夹的定时备份 需求:windows服务器上的软件程序文件夹,希望能够每天定时备份到另一台服务器上。 实现思路:利用windows文件共享服务建立两台服务器之间的链接,使用windows自带的xcopy命令完成文件夹的拷贝,使用golang完成定

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值