首页 > 其他分享 >JVM线程运行诊断

JVM线程运行诊断

时间:2023-03-15 13:23:34浏览次数:32  
标签:命令 占用 jstack cpu 诊断 线程 JVM CPU

情况1 CPU占用过多

使用 jstack 命令

如以下代码:

 /**
  * 测试类
  *
  */
public class A {
    public static void main(String[] args) throws InterruptedException {
        while (true){
            //Thread.sleep(100);
            System.out.println(1);
        }
    }
}

某个线程陷入死循环,一直占用着CPU在工作

1 让这段代码跑起来


2 使用top命令查看进程与cpu占用情况

3 可以看到占用CPU将近一半
使用命令ps H -eo pid,tid,%cpu | grep 进程号根据进程号查看其具体线程,找到cpu占用率高的线程

4 使用命令jstack 线程ID查看线程具体情况

找到我们自己的线程,可以看到下边写着locked at 9,也就是我们打印1那行,因为是死循环,所以这行一直执行,使用jstack命令我们找到了问题所在

标签:命令,占用,jstack,cpu,诊断,线程,JVM,CPU
From: https://www.cnblogs.com/ccx-lly/p/17217227.html

相关文章

  • Day 16 16.4 案例分析之对比单线程与多线程
    线程案例:爬取斗图吧表情包图片方案一:单线程版本耗时慢importrequestsfromfake_useragentimportUserAgentimportrandomfromlxmlimportetreeimportosimpo......
  • ArkUI中的线程和看门狗机制
     一、前言本文主要分析ArkUI中涉及的线程和看门狗机制。 二、ArkUI中的线程应用Ability首次创建界面的流程大致如下: 说明:•AceContainer是一个容器类,由前端......
  • Java线程池和Spring异步处理高级篇
    开发过程中我们会遇到很多使用线程池的场景,例如异步短信通知,异步发邮件,异步记录操作日志,异步处理批量Excel解析。这些异步处理的场景我们都可以把它放在线程池中去完成,当然......
  • python入门学习-3.多线程、多进程、网络通信
    进程和线程多任务线程是最小的执行单元,而进程由至少一个线程组成。多进程Linux操作系统提供了一个fork()系统调用,子进程返回0,父进程返回子进程的ID。调用getpid()可以......
  • 多线程
    多线程1.创建线程方式创建线程方式一:继承Thread类,重写run()方法,调用start开启线程总结:线程开启不一定立即执行,有cpu调度执行packagecom.zhang.linePro;publicclassTe......
  • c++11多线程入门<学习记录>
    最近学习了c++多线程相关知识,也算是对这方面内容的入门视频链接c++11并发与多线程视频课程看了大概两周,简单进行总结参考文章C++11并发与多线程PS:c++11提供了标准的可......
  • 线程的实现方式
    用户级方式LUT(多对1):整个线程的信息都在用户空间 切換又进程管理,进程内部完成,內核根本不知道线程的切换 內核級方式KLT(1对1):线程控制块在內核空間,程序段,数据段在用户空......
  • 《深入理解JVM虚拟机》
    目录走进Java编译jdkJava内存区域与内存溢出异常运行时数据区域HotSpot虚拟机对象探秘OOM异常总结垃圾收集器与内存分配策略对象已死?垃圾收集算法HotSpot的算法细节实现经......
  • HashMap、Hashtable、ConcurrentHashMap线程安全问题
    publicclassHashMapDemo{publicstaticvoidmain(String[]args)throwsInterruptedException{//HashMap是线程不安全的//Hashtable是线......
  • GDB多线程调试-发现卡死的线程
    背景在开发项目的一个feature时,发现有一个线程hang住,一直无法向元数据管理模块发送心跳,导致线程所在的机器被drop掉,组里的一个同学使用gdb找到了hang住的原因,于是自己也......