1.概述
整个代码核心思路非常简单,通过JMX接口获取线程bean,针对所有线程通过连续采集两次数据做差值算出cpu占用耗时,最后按照cpu占用时间排序取top耗时线程。
2. 源码分析
- 第一次通过threadBean.getThreadCpuTime(threadId)获取cpu耗时
- 休眠一定时间Thread.sleep(interval.millis());
- 第二次通过threadBean.getThreadCpuTime(threadId)获取cpu耗时
- 计算两次采集差值获取cpu占用耗时的Top N个线程进行返回
2.1 源码内容
private String innerDetect() throws E