首页 > 其他分享 >jstack判断线程状态

jstack判断线程状态

时间:2024-07-23 19:29:53浏览次数:4  
标签:输出 判断 jstack 死锁 线程 堆栈 BLOCKED

背景:项目启动后,日志突然就不打了,也不输出异常信息。

原因:使用@PostConstruct初始化某个方法,在该方法里,一直while循环了。

 

 

1.jstack的作用:

》打印线程的堆栈跟踪

解释 jstack -l 输出

  • 线程列表:输出首先列出所有线程的名称和状态(如RUNNABLE, WAITING, BLOCKED等)。

  • 线程ID:每个线程的ID,通常以十六进制格式显示。

  • 锁信息:如果线程处于BLOCKED状态,会显示它正在等待的锁的详细信息。

  • 堆栈跟踪:每个线程的堆栈跟踪显示了线程在执行时调用的方法和行号。

  • 死锁检测:

    • jstack -l 还会检测并报告死锁情况。
    • 输出中会包含“Found one Java-level deadlock”或“Found no deadlocks”等信息。
  • 锁的详细信息:

    • 显示每个线程持有的锁和正在等待的锁。
    • 锁信息包括锁的类型(如轻量级锁、重量级锁等)和锁的持有者。

 

2.jstack的使用

jstack -l  进程号

windows下:D:\JDK\bin,对应jdk的bin目录

 

3.在代码中一直死循环(主方法下)

 

标签:输出,判断,jstack,死锁,线程,堆栈,BLOCKED
From: https://www.cnblogs.com/wxynb/p/18319388

相关文章

  • 干货-并发编程提高——线程状态(二)
    线程:是操作系统调度的最小单元,也叫轻量级进程。它被包含在进程之中,是进程中的实际运作单位。同一进程可以创建多个线程,每个进程都有自己独立的一块内存空间。并且能够访问共享的内存变量。Java线程的状态(区分注意的是操作系统线程的状态还是java的线程状态,两者不能完全划等号):......
  • 易优CMS通过JS判断会员是否登录
    如下所示:<scripttype="text/javascript">functionlayerLogin(gourl){if(0<ey_getCookie('users_id')){alert('已经登录');}else{alert('请登录!');}}fu......
  • C#中十种常见的开启线程的方式
    //第1种:Thread类。使用场景:快速启动执行简单任务。//优点:简单易用。提供了直接控制线程的方法,如Start、Suspend、Resume、Abort等。//缺点:功能较少,不适合复杂的线程管理;直接管理线程可能导致资源利用率不高或死锁等问题。T......
  • 易优CMS模板标签range范围判断当前栏目ID在指定列表值1,2,3内
    【基础用法】标签:range描述:范围判断标签包括innotinbetweennotbetween四个标签,都用于判断变量是否中某个范围。用法:{eyou:rangename='$eyou.field.typeid'value='1,2,3,4'type='in'}输出内容{/eyou:range}属性:name=''变量value=''范围值type=''......
  • 快速理解进程与线程
    文章目录......
  • C++多线程并发基础入门教程
    C++多线程并发基础入门教程《C++ConcurrencyinAction,SecondEdition》这本书深入浅出的讲解了C++多线程知识;如果英文水平足够好,可以查阅英文原版,它也有中文译本,虽然翻译过来的质量不如原版,但英文原版阅读太费精力;我推荐新手或者有一定经验的人看这本书。1什么是C++多......
  • PHP 多线程和异步编程的常见陷阱
    本文由ChatMoney团队出品在PHP开发中,多线程和异步编程是提高应用性能和响应速度的重要手段。然而,这些技术也带来了许多挑战和陷阱,如共享状态冲突、死锁、超时、资源泄漏以及调试困难等。本文将详细探讨这些陷阱,并提供相应的解决方案和代码示例。共享状态冲突在多线程环......
  • 进程占高 jstack
     1、使用top命令找到cpu,内存使用率高得进程,得到进程id2、top-Hp进程id,获取当前进程的线程,比如:top-Hp 269373、将得到线程号转换为16进制printf”%x\n“线程id  printf”%x\n“ 271554、利用jstack获取信息 jstack进程id|grep转换的16进制线程-A30,通......
  • 如何判断一个函数是否被另一个特定函数包装?
    使用下面的代码:defwrap(x):defwrapped(y):returnx+yreturnwrappedf=wrap(1)是否可以看出f是一个被函数包裹的函数wrap?显示变量f,它是可见的:>>>f<functionwrap.<locals>.wrappedat0x10067cf40>但是有没有办法确定|||被......
  • Java学习——多线程
    1.多线程介绍1.1什么是多线程具有多线程能力的计算机因有硬件支持而能够在同一时间执行多个线程,提升性能。1.2并发与并行并行:在同一时刻,有多个指令在多个CPU上同时执行。并发:在同一时刻,有多个指令在单个CPU上交替执行。高并发是什么意思:cpu2核4线程表示可并行处理4......