【arthas诊断CPU和内存问题实战】thread -n 5 + cpu火焰图 +内存火焰图

本文详细描述了如何通过查看线程信息、执行代码分析和使用火焰图来定位Java应用程序中占用CPU和内存最多的部分,特别关注了`AbstractSceneManager`中的`tick`方法和内存中的`HashMap`对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过线程信息分析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]$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值