linux中jstack命令详解,Linuxjstack命令详解
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 ] [rver-id@]remote-hostname-or-IP
参数说明:
pid: java应⽤程序的进程号,⼀般可以通过jps来获得;
executable:产⽣core dump的java可执⾏程序;
core:打印出的core⽂件;
remote-hostname-or-ip:远程debug服务器的名称或IP;
somebody是什么意思rver-id: 唯⼀id,假如⼀台主机上多个远程debug服务;
⽰例:
$jstack –l 23561
线程分析:
⼀般情况下,通过jstack输出的线程信息主要包括:jvm⾃⾝线程、⽤户线程等。其中jvm线程会在jvm启动时就会存在。对于⽤户线程则是在⽤户访问时才会⽣成。
l jvm线程:
在线程中,有⼀些 JVM内部的后台线程,来执⾏譬如垃圾回收,或者低内存的检测等等任务,这些线程往往在JVM初始化的时候就存在,如下所⽰:
"Attach Listener" daemon prio=10 tid=0x0000000052fb8000 nid=0xb8f waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
- None
destroyJavaVM" prio=10 tid=0x00002aaac1225800 nid=0x7208 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
- Nonesafestnet
脑图英语l ⽤户级别的线程
还有⼀类线程是⽤户级别的,它会根据⽤户请求的不同⽽发⽣变化。该类线程的运⾏情况往往是我们所关注的重点。⽽且这⼀部分也是最容易产⽣死锁的地⽅。
"qtp496432309-42" prio=10 tid=0x00002aaaba2a1800 nid=0x7580 waiting on condition [0x00000000425e9000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
-
parking to wait for <0x0000000788cfb020> (a urrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at urrent.locks.LockSupport.parkNanos(LockSupport.java:198)
at
urrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2025)
lip.jetty.util.BlockingArrayQueue.poll(BlockingArrayQueue.java:320)
lip.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:479)
chkenat java.lang.Thread.run(Thread.java:662)
Locked ownable synchronizers:
- None
从上述的代码⽰例中我们可以看到该⽤户线程的以下⼏类信息:
Ø 线程的状态:waiting on condition(等待条件发⽣)
Ø 线程的调⽤情况;
Ø 线程对资源的锁定情况;
linux awk命令详解
linux awk命令详解 简介 awk是⼀个强⼤的⽂本分析⼯具,相对于grep的查找,d的编辑,awk在其对数据分析并⽣成报告时,显得尤为强⼤.简单来说awk就是把⽂件逐⾏的读⼊,以空格为默认分 ...
linux cat 命令详解
【初级】linux rm 命令详解及使⽤⽅法实战
rm:删除命令 前⾔: windows中的删除命令⼤家都不陌⽣,linux中的删除命令和windows中有⼀个共同特点,那就是危险,前两篇linux mkdir
命令详解及使⽤⽅法实战[初级]中我们就 ...
Linux netstat命令详解
Linux netstat命令详解 ⼀ 简介 Netstat 命令⽤于显⽰各种⽹络相关信息,如⽹络连接,路由表,接⼝状态 (Interface
Statistics),masquerade 连接,多 ...
linux grep命令详解
linux grep命令详解 简介 grep (global arch regular expression(RE) and print out the line,全⾯搜索正则表达式并把⾏打印出来 ...
Linux chmod命令详解
Linux chmod命令详解 chmod----改变⼀个或多个⽂件的存取模式(mode) chmod [options] mode files 只能⽂件属主或特权⽤户才
能使⽤该功能来改变⽂件 ...
【转发】linux yum命令详解
exp是什么意思linux yum命令详解 yum(全 称为 Yellow dog Updater, Modified)是⼀个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理, ...
linux iostat命令详解 磁盘操作监控⼯具
Linux系统中的 iostat是I/O statistics(输⼊/输出统计)的缩写,iostat⼯具将对系统的磁盘操作活动进⾏监视. 它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使⽤情况. ...
linux yum 命令 详解
linux yum命令详解 yum(全称为 Yellow dog Updater, Modified)是⼀个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能 ...
随机推荐
分布式唯⼀ID⽣成服务
SNService是⼀款基于分布式的唯⼀ID⽣成服务,主要⽤于提供⼤数量业务数据建⽴唯⼀ID的需要;服务提供最低10K/s的唯⼀ID请求处理.如果你部署服务的CPU资源达到4核的情况下那该服务最低可以 ...
java ⽂件操作
1.按⾏读取 File file = new File(“your path”); BufferedReader reader = null; try { //System.out.println(& ...
HTML 空格的表⽰符号 nbsp / ensp / emsp 的区别?
惟妙惟肖什么意思declared半⾓的不断⾏的空⽩格(推荐使⽤) 半⾓的空格 全⾓的空格 半⾓的不断⾏的空⽩格(推荐使⽤) 半⾓的空格 全⾓的空格
关于CodeReview(java)(转)
关于codereview,在平时的开发中,经常忽略的环节,参照⽬前介绍写好代码的⼏本书和之前掉进的坑,做了⼀个总结,分享出来. 为什么要做 通过review规避⼀些代码层⾯的问题 提升可读性,⽅便后续 ...
require.js实践
R语⾔包下载(转载)
linux eaccelerator美国奖学金
SaltStack⼀键部署负载均衡和⾼可⽤
acps
⼀.负载均衡的部署 rver1 haproxy (调度器) rver2 apache rver3 nginx 1)在rver1上⾸先安装salt-minion服务.并 ...
scheduleOnce
//程序开始后延时2秒才开始addSprite函数 scheduleOnce(schedule_lector(Issue1305::addSprite), ); 转到定义: void CCNode ...