Advertisement

深入分析线程堆栈状态

阅读量:

使用浏览器来查看线程堆栈

jstack负责生成虚拟机当前时间点的thread dumps(通常称为threaddump或jаваcore文件)。这些thread dumps记录了每个正在运行的线程在其执行方法栈上的具体状态。 thread dumps的主要作用是帮助开发者定位那些长时间停滞不前的常见原因。 当某个线程卡住时使用jstack工具查看其调用堆栈就能了解该线程执行的具体任务或者等待资源的情况。

在JDK版本中(或其他适用版本中),java.lang.Thread类新增名为getAllStackTraces()的方法旨在获取虚拟机中的所有线程对象(Thread对象)。通过这几行代码即可实现类似jstack的功能。

复制代码
    <%@ page import="java.util.Map" %>
    <body>
    <pre>
        <%
            for(Map.Entry<Thread, StackTraceElement[]>  stackTrace : Thread.getAllStackTraces().entrySet()){
                Thread thread = (Thread)stackTrace.getKey();
                StackTraceElem

全部评论 (0)

还没有任何评论哟~