【发布时间】:2017-03-08 16:36:28
【问题描述】:
我们最近在生产环境中看到了 CPU 消耗高的问题,并且在调试时发现了一些奇怪的问题。当我执行“top -H”来查看每个线程 ID 的 CPU 统计信息时,我发现一个线程 X 消耗了高 CPU。当我进行线程转储时,我看到这个线程 X 处于 BLOCKED 状态。这是什么意思,处于 BLOCKED 状态的线程可以消耗高 CPU 吗?我认为这可能是一个微不足道的问题,但我是调试性能问题和 JVM 的新手,不确定我可能在这里遗漏了什么。
【问题讨论】:
-
您只是在拍摄快照。这并不能证明线程始终处于
BLOCKED状态。根据实现的不同,线程也有可能会消耗 CPU 周期以不成功地尝试离开BLOCKED状态。
标签: jvm cpu-usage thread-dump apm