专栏首页爱明依jstack:java 堆栈工具

jstack:java 堆栈工具

生成线程快照的主要目的就是定位线程出现长时间停顿的原因,如线程死锁,死循环请求外部资源导致的长时间等待等都是导致线程长时间停顿的常见原因。线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做些什么事情,或者等待着什么资源。

jstack 命令格式

jstack [option] vmid

以下是jstack 工具的主要选项

-F

当正常输出的请求不被响应时,强制输出线程堆栈

-l

除堆栈外,显示关于锁的附加信息

-m

如果调用到本地方法的话,可以显示c/c++的堆栈

在jdk1.5中,java.lang.Thread 类新增了一个getAllStackTraces() 方法用于获取虚拟机中所有线程的StackTraceElement 对象。使用这个方法几行代码就完成jstack

的大部分功能。在实际项目中,不妨调用这个方法作为管理员页面,可以随时使用浏览器来查看线程堆栈。

for(Map.Entry<Thread,StackTraceElement[]> stackTrace:Thread.getAllStackTraces().entrySet()){ Thread thread=(Thread)stackTrace.getKey(); StackTraceElement[] stack=(StackTraceElement[])stackTrace.getValues(); if(thread.equals(Thread.currentThread())){ continue; } System.out.println("\n线程"+thread.getName()+"\n"); for(StackTraceElement element:stack){ System.out.println("\n"+element+"\n"); } }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • JVM-concurrent-HashSet-problem Java 并发问题

    上午刚到公司,准备开始一天的摸鱼之旅时突然收到了一封监控中心的邮件。 心中暗道不好,因为监控系统从来不会告诉我应用完美无 bug,其实系统挺猥琐。 打开邮件...

    爱明依
  • java 线程总结(一)

    一个Java程序的运行不仅仅是main()方法的运行,而是main线程和多个其他线 程的同时运行。

    爱明依
  • java 内存模型的基础

    1.1 .1 并发编程模型的两个关键问题 a:线程之间如何通信(交换信息) b :线程之间如何同步 在命令式编程中,线程之间的通信机制有两种:共享...

    爱明依
  • python3 多线程编程

    线程是CPU分配资源的基本单位。但一个程序开始运行,这个程序就变成了一个进程,而一个进程相当于一个或者多个线程。当没有多线程编程时,一个进程也是一个主线程,但有...

    py3study
  • 线程最最基础的知识

    试想一下没有线程的程序是怎么样的?百度网盘在上传文件时就无法下载文件了,得等文件上传完成后才能下载文件。这个我们现在看起来很反人性,因为我们习惯了一个程序同时可...

    LieBrother
  • 多线程--锁的升级

    在多线程并发编程中,synchronized一般我们认为是重量级锁,但是随着JDK1.6的优化之后,在一些情况下它就不显得那么重量级了,因为在JDK1.6中为了...

    用户7386338
  • python 多线程简单实现

    线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。

    py3study
  • 【小家java】记录Java守护线程使用时因忽略细节,导致的一个线上问题的排查过程(守护线程异常退出)

    记得我在之前某一篇博文里讲到过一个案例:使用java的守护线程来模拟redis缓存的过期时间设定。

    YourBatman
  • Java并发编程:概念和原理

    . Java并发编程在实际的工作中应用广泛,有时候需要通过多线程去异步做一些事情,有时候需要通过多线程提升一个任务执行的效率。最近又在回顾一些Java编程的基本...

    企鹅号小编
  • Java并发编程--Lock

      Lock 实现提供了比使用 synchronized 方法和语句可获得的更广泛的锁定操作。synchronized方法或代码块的使用提供了对与每个对象相关的...

    在周末

扫码关注云+社区

领取腾讯云代金券