fun cpuHigh() {
Thread {
while (true) {
println("cpu飙升中~")
}
}.start()
}
2、运行项目,运行Arthas,找到自己当前项目对应的PID进行监听
3、使用 thread 命令,排查当前项目中的各个运行中方法的CPU占用率情况
可见图中,ID=11的线程CPU占用率很高,达到66.09%
4、使用 thread -[id] 命令,继续查看这个线程具体是哪个方法所导致的CPU占用率过高由这里可知,Java的状态共分为6种:NEW: 0, RUNNABLE: 9, BLOCKED: 0, WAITING: 4, TIMED_WAITING: 2, TERMINATED: 0
由图可见,id=11的任务处于RUNNABLE状态,且CPU占用率高的主要原因是因为一直进行FileOutputStream操作,也就是输出流操作,并且定位代码在 TestMain.kt 中的第28行执行了这个高CPU占用率的方法,而导致的,再来看下代码
5、使用 thread -n -[数量] 命令,查看CPU占用率为前三的线程


