Java内存监控工具(下)

文章目录jstack语法option-F-l-mpid实战1、运行如下代码2、执行jps命令获取进程id:3、执行jstack pid命令:查看pid进程内线程信息:线程与Monitor进入区(Entrt Set)拥有者(The Owner)等待区(Wait Set)线程状态:1、NEW2、RUNNABLE3、BLOCKED4、WAITING5、TIMED_WAITING6、TERMINATED:...
摘要由CSDN通过智能技术生成

jstack

语法

jstack [option] <pid>

说明:

option

命令选项,常用选项如下:

-F

当’jstack [-l] pid’没有相应的时候强制打印栈信息,如果直接jstack无响应时,用于强制jstack),一般情况不需要使用

Attaching to process ID 2104, please wait...
Debugger attached successfully.
Client compiler detected.
JVM version is 25.201-b09
Deadlock Detection:

No deadlocks found.

Thread 1: (state = BLOCKED)


Thread 10: (state = IN_JAVA)
 - test.Test$Task.run() @bci=0, line=13 (Interpreted frame)
 - java.lang.Thread.run() @bci=11, line=748 (Interpreted frame)


Thread 6: (state = BLOCKED)


Thread 5: (state = BLOCKED)


Thread 4: (state = BLOCKED)
 - java.lang.Object.wait(long) @bci=0 (Interpreted frame)
 - java.lang.ref.ReferenceQueue.remove(long) @bci=59, line=144 (Interpreted frame)
 - java.lang.ref.ReferenceQueue.remove() @bci=2, line=165 (Interpreted frame)
 - java.lang.ref.Finalizer$FinalizerThread.run() @bci=36, line=216 (Interpreted frame)


Thread 3: (state = BLOCKED)
 - java.lang.Object.wait(long) @bci=0 (Interpreted frame)
 - java.lang.Object.wait() @bci=2, line=502 (Interpreted frame)
 - java.lang.ref.Reference.tryHandlePending(boolean) @bci=54, line=191 (Interpreted frame)
 - java.lang.ref.Reference$ReferenceHandler.run() @bci=1, line=153 (Interpreted frame)
-l

长列表. 打印关于锁的附加信息,例如属于java.util.concurrent的ownable synchronizers列表,会使得JVM停顿得长久得多(可能会差很多倍,比如普通的jstack可能几毫秒和一次GC没区别,加了-l 就是近一秒的时间),-l 建议不要用。一般情况不需要使用

2019-07-22 15:41:02
Full thread dump Java HotSpot(TM) Client VM (25.201-b09 mixed mode):

"DestroyJavaVM" #9 prio=5 os_prio=0 tid=0x0171d000 nid=0x1e04 waiting on condition [0x00000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
        - None

"Thread-0" #8 prio=5 os_prio=0 tid=0x15a2ac00 nid=0x1c50 runnable [0x1602f000]
   java.lang.Thread.State: RUNNABLE
        at test.Test$Task.run(Test.java:13)
        at java.lang.Thread.run(Thread.java:748)

   Locked ownable synchronizers:
        - None

"Service Thread" #7 daemon prio=9 os_prio=0 tid=0x159db800 nid=0x1d28 runnable [0x00000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
        - None

...
-m

打印java和native c/c++框架的所有栈信息.可以打印JVM的堆栈,显示上Native的栈帧,一般应用排查不需要使用

Attaching to process ID 2104, please wait...
Debugger attached successfully.
Client compiler detected.
JVM version is 25.201-b09
Deadlock Detection:

No deadlocks found.

----------------- 0 -----------------
0x771a1d8c      ntdll!ZwWaitForSingleObject + 0xc
0x76cd8712      KERNELBASE!WaitForSingleObject + 0x12
0x00d45120      javaw + 0x5120
0x00d43475      javaw + 0x3475
0x00d44562      javaw + 0x4562
0x00d43703      javaw + 0x3703
----------------- 1 -----------------
0x771a1d8c      ntdll!ZwWaitForSingleObject + 0xc
0x76cd8712      KERNELBASE!WaitForSingleObject + 0x12
0x6da43889      jvm!_JVM_FindSignal@4 + 0x2979
0x6d9ddec1      jvm!JVM_GetThreadStateNames + 0x4f391
0x6d9de256      jvm!JVM_GetThreadStateNames + 0x4f726
0x6d9ff411      jvm!JVM_GetThreadStateNames + 0x708e1
0x6d95c325      jvm!JNI_GetCreatedJavaVMs + 0x5965
0x00d42175      javaw + 0x2175
0x00d4b05f      javaw + 0xb05f
0x00d4b0e9      javaw + 0xb0e9
0x73c78744      KERNEL32!BaseThreadInitThunk + 0x24
0x7719587d      ntdll!RtlGetAppContainerNamedObjectPath + 0xfd
0x7719584d      ntdll!RtlGetAppContainerNamedObjectPath + 0xcd
...

pid

进程id

实战

1、运行如下代码
public class Test {
	
	public static void main(String[] args) {
		while(true) {
		}
	}
}

2、执行jps命令获取进程id:
jps
14100 Test
2104 Test
2764
7644 Jps
3、执行jstack pid命令:查看pid进程内线程信息:
2019-07-22 15:49:28
Full thread dump Java HotSpot(TM) Client VM (25.201-b09 mixed mode):

"Service Thread" #7 daemon prio=9 os_prio=0 tid=0x14ef2000 nid=0x2f7c runnable [0x00000000]
   java.lang.Thread.State: RUNNABLE

"C1 CompilerThread0" #6 daemon prio=9 os_prio=2 tid=0x14e98800 nid=0x1ca0 waiting on condition [0x00000000]
   java.lang.Thread.State: RUNNABLE

"Attach Listener" #5 daemon prio=5 os_prio=2 tid=0x14e8b400 nid=0x29ac waiting on condition [0x00000000]
   java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" #4 daemon prio=9 os_prio=2 tid=0
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值