• 技术文章 >java >java基础

    java中Thread Dump是什么

    小妮浅浅小妮浅浅2021-06-18 09:43:57原创3085

    说明

    1、ThreadDump用于诊断Java应用程序的问题,可用于查找存储器泄漏,发现死锁线程等。

    2、该系统可获得线程、线程运行状态、标识、调用等信息,包括完整的类名、执行方法、源代码所在行数等。

    特点

    可用于各种操作系统;

    可以在各种Java应用服务器下使用;

    可以在不影响系统性能的情况下使用;

    问题可以直接定位在应用程序的代码行上。

    实例

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    public class JStack {

                public static void main(String[] args) throws Exception {

                   ...

                        String pid = args[optionCount];

                        String params[];

                        if (locks) {

                            params = new String[] { "-l" };

                        } else {

                            params = new String[0];

                        }

                        runThreadDump(pid, params);

                    ...

                }

                // Attach to pid and perform a thread dump

                private static void runThreadDump(String pid, String args[])

                        throws Exception {

                    VirtualMachine vm = null;

                    try {

                        vm = VirtualMachine.attach(pid);

                    } catch (Exception x) {

                       ...

                    }

                    // Cast to HotSpotVirtualMachine as this is implementation specific

                    // method.

                    InputStream in = ((HotSpotVirtualMachine) vm)

                            .remoteDataDump((Object[]) args);

                    // read to EOF and just print output

                    byte b[] = new byte[256];

                    int n;

                    do {

                        n = in.read(b);

                        if (n > 0) {

                            String s = new String(b, 0, n, "UTF-8");

                            System.out.print(s);

                        }

                    } while (n > 0);

                    in.close();

                    vm.detach();

                }

    以上就是java中Thread Dump的介绍,希望对大家有所帮助。更多Java学习指路:Java基础

    本教程操作环境:windows7系统、java10版,DELL G3电脑。

    专题推荐:java threaddump
    上一篇:java内部类的内存泄漏原因 下一篇:java Thread的状态分析

    相关文章推荐

    • java Channel是什么• java中jstack是什么• java使用JConsole检测死锁• java线程池死锁的产生及处理• java中default如何操作接口• java集合排序的两种方法• java函数式接口是什么• java中lambda访问外部变量• java Predicate是什么• java Function怎么用?• java中Supplier是什么?

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网