通过线程信息分析CPU
1.查看线程信息
step1: 先查看哪个线程占比cpu最高
分析:
可与看出 SceneWorker占比最高,但是是哪个类中哪个方法则不是太清楚。
我们还需要去分析代码:
step2.分析代码
1.AbstractSceneManager的 this.sceneWorkers = new SceneExecutor("SceneWorker", sceneWorkerNum); 创建,接下来我们这个线程看下在哪里调用
2.AbstractSceneManager的 execute调用 // 里面发现了sleep方法,其实也就是服务器的帧率了. < 100ms不打印,超过则打印
这个execute是在run方法体
在Application的:
bigWorldSceneManager = new BigWorldSceneManager(1, 8);
bigWorldSceneManager.start();
3.看下execute做了什么事:
// 处理场景tick更新
sceneWorkers.forEach(scenes.values(), scene -> scene.tick(now), false);
分析:
这个scene是BigWorldScene。 负责这个沙盘的更新。也就是: AbstraceScene的tick方法,我们进来查看
4.[arthas@18936]$