Java定位代码导致的CPU过高问题

相信大家肯定遇到过java程序cpu一直居高不下的情况,那么我来简单介绍在linux系统下如何定位java进程cpu过高的代码位置。

  • 首先,使用命令top,找到cpu过高的pid;
  • 接着,使用top -Hp pid 找到对应的线程 tid;
  • 我们知道jstack可以查看当前java进程的堆栈状态;由于线程在堆栈信息的使用16进制的。那么,printf "%x" tid 可以获取16进制的 tid16。
  • 最后使用 jstack pid |grep -A 10 tid16 ,根据情况调整行数后,就可以看到该线程是执行的代码。

版权声明:著作权归作者所有。

相关推荐

对于问题最好的解决方式

外部能解决的优先外部解决,最省力的解决方式。外部无法解决的,采取查找。最后是自己来解决。优先寻找成本的最低的方法

CSS让绝对定位的元素居中的办法

水平居中,设置left:0,right:0, 垂直居中,设置top:0,bottom:0。margin设置为auto<!DOCTYPE html> <html lang="en"> <head> <title>SO question 2803532</title> <style type="text/css

[译]代码优先的Java 9模块系统教程(二)

服务监控(ServiceMonitor)让我们来想象一个提供娱乐服务的网络,可能是社交网络或者是视频网络。我们希望监控这些服务,以确定系统的健康状况,并且在发生问题时能够发现,而不是客户报告。 这就是ServiceMonitor示例程序所要做的:监视这些服务(另一个惊喜)。幸运的是,服务已经收集了我们想要的数据,ServiceMonitor所需要做的就是定期查询。 不幸的是,并

[译]代码优先的Java 9模块系统教程(一)

Java平台模块系统(JPMS)将模块化带入Java和JVM,并改变了我们在大型应用中的编程方式。 为了充分利用它,我们需要很好地了解,第一步是学习基础知识。 在本教程中,我首先向你展示一个简单的Hello World示例,然后我们用Java 9将一个现有的demo程序模块化。我们将创建模块声明(module-info。java),使用模块路径来编译,打包,以及运行程序——先代