当前位置:网站首页 > Java基础 > 正文

线上一次排错:JAVA程序占用CPU超过100%

前言:今天在线上发现程序接口有点慢,去服务器上top看了一下原因,是cpu占用太大,后面把解决过程分享出来

top截图:

从截图中可以看到,PID为25364的java应用cpu使用率为145.5%,超级不正常

解决方法:使用jstack工具分析线程,我的java安装的是openJdk,需要重新安装jstack 工具

--安装jstack

yum install java-1.8.0-openjdk-devel -y

--获取线程信息

top -p 25364 -H 

 有图可以看到,PID为28157的线程造成的CPU占用过高。

--将PID为28157的线程的进程号转换成16进制为6dfd,在使用jstack获取线程的具体信息

jstack 25364 |grep -A 10 0x6dfd

获取如下结果:

有图可以看到,原因是:at com.hty.b2c.controller.MegPay.msgWeChatApi(MegPay.java:168),查看代码:

应该是string类型的字符串隐式转换成了StringBuilder, StringBuilder是线程不安全的,将该处代码改写成StringBuffer即可。

备注:还可以使用jmap指令查看具体堆内存使用状况:jmap -histo pid |less 可以查看具体是那个对象占用内存。

到此这篇线上一次排错:JAVA程序占用CPU超过100%的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • java使用AOP切面获取请求日志并记录2024-11-30 08:09:07
  • windows下启动了多个java,杀死指定进程2024-11-30 08:09:07
  • 葵司JAVA25_[PAT] 1012 The Best Rank (25 分)Java2024-11-30 08:09:07
  • OSHI 是一个免费的基于 JNA(本机)的 Java 操作系统和硬件信息库2024-11-30 08:09:07
  • Java打印输出:在线天堂2024-11-30 08:09:07
  • idea创建java的maven聚合工程2024-11-30 08:09:07
  • macbook安装低版本的jdk,提示“Oracle 的 Java 要求 Mac OS X 10.7.3 或更高版本”2024-11-30 08:09:07
  • java spring调用db.properties外部文件时出错2024-11-30 08:09:07
  • java泛型2024-11-30 08:09:07
  • java异常的捕获2024-11-30 08:09:07
  • 全屏图片