Java jvisualvm线程cpu时间使用率
我正在使用jvisualvm来监视正在运行的java程序。当我深入了解线程cpu使用情况的细节时,我得到了以下图片。CPU使用包括文件部分:运行、睡眠、等待、停驻和监视 我没有找到任何关于列的官方定义,所以我想知道这些列在java代码中的真正含义是什么Java jvisualvm线程cpu时间使用率,java,performance,jvisualvm,Java,Performance,Jvisualvm,我正在使用jvisualvm来监视正在运行的java程序。当我深入了解线程cpu使用情况的细节时,我得到了以下图片。CPU使用包括文件部分:运行、睡眠、等待、停驻和监视 我没有找到任何关于列的官方定义,所以我想知道这些列在java代码中的真正含义是什么 运行:执行过程中使用的时间 睡眠:线程。睡眠(长) 等待: Park:LockSupport.Park 监视器: Running:线程在CPU上运行的时间 休眠:线程因线程而休眠的时间。休眠(…) 等待:线程等待资源的时间(例如套接字/tt
:执行过程中使用的时间运行
:线程。睡眠(长)睡眠
:等待
:LockSupport.ParkPark
:监视器
- Running:线程在CPU上运行的时间
- 休眠:线程因
线程而休眠的时间。休眠(…)
- 等待:线程等待资源的时间(例如套接字/tty)
- Park:线程由于锁定支持而停止的时间。Park()
- 监视器:线程在监视器上被阻塞的时间(正如Evans Y.正确指出的,监视器在
同步的
块/函数上被调用)
- 睡眠:
线程。睡眠(..)
- 等待:
对象。等待(…)
- Park:当您使用新的并发对象时,在jdk5+中引入,它可能使用了
LockSupport.Park
- 监视:调用
方法/对象时同步
如果某个线程正在等待套接字,则时间可能以运行<代码>为准 在这张图片中,线程池账单大部分时间都在
运行
,但事实是它在套接字上等待了很长时间:
"Thread-pool-Bill" - Thread t@42
java.lang.Thread.State: RUNNABLE
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
- locked <79f0aad8> (a java.net.SocksSocketImpl)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
“线程池账单”-线程t@42
java.lang.Thread.State:可运行
位于java.net.PlainSocketImpl.socketConnect(本机方法)
位于java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
-锁定(一个java.net.socksocketimpl)
位于java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
位于java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
位于java.net.socksocketimpl.connect(socksocketimpl.java:392)
那么监视器是什么意思?