linux环境jstack命令详解,Linux jstack命令详解

linux环境jstack命令详解,Linux jstack命令详解jstack 用于打印出给定的 java 进程 ID 或 corefile 或远程调试服务的 Java 堆栈信息 如果是在 64 位机器上 需要指定选项 J d64 Windows 的 jstack 使用方式只支持以下的这种方式 jstack l pid 如果 java 程序崩溃生成 core 文件 jstack 工具可以用来获得 core 文件的 javastack 和 nativestack 的信息 从而可以轻松地知道 java 程

jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息。

如果是在64位机器上,需要指定选项”-J-d64″,Windows的jstack使用方式只支持以下的这种方式:jstack [-l] pid

如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。

另外,jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stack和native stack的信息, 如果现在运行的java程序呈现hung的状态,jstack是非常有用的。

需要注意的问题:

l 不同的 JAVA虚机的线程 DUMP的创建方法和文件格式是不一样的,不同的 JVM版本, dump信息也有差别。

l 在实际运行中,往往一次 dump的信息,还不足以确认问题。建议产生三次 dump信息,如果每次 dump都指向同一个问题,我们才确定问题的典型性。

2、命令格式

$jstack [ option ] pid

$jstack [ option ] executable core

$jstack [ option ] [server-id@]remote-hostname-or-IP

参数说明:

pid: java应用程序的进程号,一般可以通过jps来获得;

executable:产生core dump的java可执行程序;

core:打印出的core文件;

remote-hostname-or-ip:远程debug服务器的名称或IP;

server-id: 唯一id,假如一台主机上多个远程debug服务;

示例:

$jstack –l 23561

线程分析:

一般情况下,通过jstack输出的线程信息主要包括:jvm自身线程、用户线程等。其中jvm线程会在jvm启动时就会存在。对于用户线程则是在用户访问时才会生成。

l jvm线程:

在线程中,有一些 JVM内部的后台线程,来执行譬如垃圾回收,或者低内存的检测等等任务,这些线程往往在JVM初始化的时候就存在,如下所示:

1 “Attach Listener” daemon prio=10 tid=0x0000000052fb8000 nid=0xb8f waiting on condition [0x0000000000000000]2

3 java.lang.Thread.State: RUNNABLE4

5

6

7 Locked ownable synchronizers:8

9 -None10

11 destroyJavaVM” prio=10 tid=0x00002aaac nid=0x7208 waiting on condition [0x0000000000000000]

12

13 java.lang.Thread.State: RUNNABLE14

15

16

17 Locked ownable synchronizers:18

19 – None

l 用户级别的线程

还有一类线程是用户级别的,它会根据用户请求的不同而发生变化。该类线程的运行情况往往是我们所关注的重点。而且这一部分也是最容易产生死锁的地方。

1 “qtp-42” prio=10 tid=0x00002aaaba2a1800 nid=0x7580 waiting on condition [0x00000000425e9000]2

3 java.lang.Thread.State: TIMED_WAITING (parking)4

5 at sun.misc.Unsafe.park(Native Method)6

7 – parking to wait for <0x0000000788cfb020>(a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)8

9 at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:198)10

11 at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2025)12

13 at org.eclipse.jetty.util.BlockingArrayQueue.poll(BlockingArrayQueue.java:320)14

15 at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:479)16

17 at java.lang.Thread.run(Thread.java:662)18

19

20

21 Locked ownable synchronizers:22

23 – None

从上述的代码示例中我们可以看到该用户线程的以下几类信息:

Ø 线程的状态:waiting on condition(等待条件发生)

Ø 线程的调用情况;

Ø 线程对资源的锁定情况;

原文:http://www.cnblogs.com/wspblog/p/4651971.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/214372.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午4:25
下一篇 2026年3月18日 下午4:25


相关推荐

  • idea快速删除一行_idea查找文件内容快捷键

    idea快速删除一行_idea查找文件内容快捷键使用eclipse,有时候出现多个空行时,习惯使用快捷键:Ctrl+D,删除当前一行。最近使用idea开发,发现手动删除空行,很麻烦,特意查了一下,发现是快捷键:Ctrl+Y。如下图所示:使用Ctrl+Y后删除当前行另外:可以使用设置,讲idea的快捷键设置为eclipse模式…

    2025年9月25日
    6
  • matlab作品_葫芦丝最炫民族风

    matlab作品_葫芦丝最炫民族风%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Mostshiningnationalwind//最炫民族风onMatlab%TheModificationisfrom”canon”,notbymefs=44100;%sampleratedt=1/fs;T16=0.125;t16=[0:dt:T16];[tempk]…

    2026年2月19日
    6
  • 类加载器详解

    类加载器详解类加载器的分类 JVM 支持两种类型的类加载器 分别为引导类加载器 BootstrapCla 和自定义类加载器 User DefinedClass 从概念上来讲 自定义类加载器一般指的是程序中由开发人员自定义的一类 类加载器 但是 Java 虚拟机规范却没有这么定义 而是将所有派生于抽象类 ClassLoader 的类加载器都划分为自定义类加载器无论类加载器的类型如何划分 在程序中我们最常见的类加载器始终只有 3 个 如下所示 所以具体为引导类加载器 BootstrapCla

    2026年3月17日
    2
  • Spark Streaming Join

    Spark Streaming Join多数据源Join思路多数据源Join大致有以下三种思路:数据源端Join,如Android/IOS客户端在上报用户行为数据时就获取并带上用户基础信息。计算引擎上Join,如用SparkStreaming、Flink做Join。结果端Join,如用HBase/ES做Join,Join键做Rowkey/_id,各字段分别写入列簇、列或field。三种思路各有优劣,使用时注意…

    2022年6月30日
    31
  • MySQL 嵌套查询_嵌套查询和嵌套结果的区别

    MySQL 嵌套查询_嵌套查询和嵌套结果的区别自测题:1、查询哪些课程没有人选修列出课程号和课程名;[code]selectcno,cnamefromcoursewherecnonotin(selectdistinctcnofromsc)[/code]2、用子查询实现如下查询:(1)查询选修了1号课程的学生姓名和所在系;[code]selectsname,snofromstudentwheresnoin(select…

    2022年8月10日
    9
  • “龙虾”之父喊话合作,百度做对了什么?

    “龙虾”之父喊话合作,百度做对了什么?

    2026年3月13日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号