线上项目运行时,出现问题不像在本地那么容易排查,经常需要借助日志、或者一些工具来找出问题。cpu被占满我们经常会遇到。比如我们有这样一段代码:

 public Class Demo1_16 {

     public static void main(String[] args) {

         new Thread(null, () -> {
System.out.println("...");
while(true) { }
}, "thread1").start;
}
}

具体排查方法就是:

  • top 命令定位进程,比如图中32655进程占用了97.

  • 接着可以用 "ps H -eo pid, tid, %cpu | grep 进程id" 命令定位具体线程

  • 最后用jvm命令  "jstack 进程id" ,根据线程id找到有问题的线程(10进制转换为16进制),具体到源代码行数。"thread3"这样开头的是我们自己写的程序,其他样式的是虚拟机线程,名称是固定的。

接着要将进程id转换为16进制,比如 32655 --> 0x7f99,也就是 “thread1”,具体到第8行代码有问题, 就是while死循环的问题。

最新文章

  1. 一文弄懂神经网络中的反向传播法——BackPropagation
  2. iOS·UIButton如何文字在下图片在上
  3. ndk-stack 使用(分析native代码stack)
  4. 深入理解Java之线程池
  5. HTML5&CSS3经典动态表单-2
  6. Java学习-011-创建文件实例及源代码
  7. javascript高级编程笔记05(面向对象)
  8. 原已经安装好的nginx,现在需要添加一个未被编译安装的模块--echo-nginx-module-0.56
  9. C语言对象化编程
  10. 软件介绍:搜索工具 Listary
  11. bfs UESTC 381 Knight and Rook
  12. ES6正则表达式扩展
  13. Android binder机制---概述
  14. 玩一把JS的链式调用
  15. 使用Mkdocs构建你的项目文档
  16. LOJ #116 有源汇点有上下界的最大流
  17. Mongodb3.6 基操命令(二)——如何使用help
  18. 应对 Visual Stdio 编译时出现错误:常量中有换行符
  19. 【转】PO/POJO/BO/DTO/VO的区别
  20. k8s cronjob设置作业失败后退出不重复执行

热门文章

  1. Java中的堆和栈
  2. 注解实现SpringCache自定义失效时间
  3. 时间序列神器之争:prophet VS lstm
  4. javascript 面向对象学习(一)——构造函数
  5. 君荣一卡通软件mysql转sqlserver 教程
  6. scws中文分词安装和使用
  7. apt update 提示 Release file for http://… is not valid yet (invalid for another d..)
  8. Linux防火墙iptables详解
  9. Linux下配置tomcat
  10. cc28c_demo.cpp,派生类的构造函数和析构函数-代码示范3