---
title: 调优过程
description: "- 已安装鲲鹏DevKit。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdevps/profiler/demo/kunpengsptjavahot_21_0005.html
sourcePath: /source/zh/kunpengdevps/profiler/demo/kunpengsptjavahot_21_0005.html
indexId: a462d237cb56c2a49b710c0bc79f686cf3a03b0cb20a8299c9ad0b87e7bb123468
---
# 调优过程

#### 前提条件

- 已安装鲲鹏DevKit。
- 服务器和操作系统正常运行。
- PC端已经安装SSH远程登录工具。
- 准备需要优化的Java程序并在目标服务器上启动。


#### 操作步骤

实践使用demo请参考testdemo(https://github.com/kunpengcompute/devkitdemo/tree/main/Hyper_tuner/testdemo/基于java性能分析工具的热点函数定位调优实践)。

1. 进行在线分析。
  在概览页签下发现程序的CPU负载一直比较高。

  图1 在线分析-概览

  需要确认程序具体事项，或者是否有热点函数在执行。

2. 进行采样分析。
  采样时长可以设置长一点。

  图2 创建采样分析

3. 查看采样分析结果。
  图3 采样分析-概览

  查看概览页签，从CPU的利用率上可以看出，用户态占较多，说明CPU主要执行Java代码。

  如果内核态占较多，说明CPU更多地执行系统相关的操作。

4. 查看CPU页签的方法采样结果。
  从Java方法采样的火焰图可以看出在采样期间，程序的方法采样主要落在两个函数调用处，可以表明CPU消耗在这两个函数的时间会较多。

  图4 采样分析-火焰图

  查看具体信息，通过函数的全限定名称可以辨别发现的两个函数是用户的自主创新代码。

  图5 采样分析-反火焰图

  将图类型切换为调用树，可以发现跟火焰图一样的结果，采样主要落在两个函数。

  图6 采样分析-CPU-调用树

5. 问题分析。
  根据火焰图和调用树提供的热点函数的类的全限定名称，去代码中搜索对应的函数，进而分析业务逻辑。

  实际用户程序的方法火焰图会比较复杂，需要用户逐步找出需要的目标函数。


#### 总结

Java中的热点函数定位，主要通过函数火焰图进行定位，然后通过火焰图提供的方法的全限定名称去搜索业务代码，进而进行代码的优化。

在进行其他程序调优时，需要根据鲲鹏DevKit Java性能分析工具采集的实际结果和对应的优化建议进行调优操作，调优思路可以参考本次实践。
