因为我们最近开发发现APP特别卡顿,经过同事和我一直最后发现并解决了问题,特此记录并供参考
查看文章前请确保一下必须正常
- 电脑配置好adb环境
- adb连接手机成功
新建一个Android studio项目,包名称
com.lixiang 运行到手机
首先alt+r 输入才cmd进入控制台,,输入 adb shell top 查看手机cup占用情况如下:
图中可以查看到每个进程当前占用的cup的情况,键盘点击enter可以刷新,我们可以看到进程中并没有我们新建的项目,因为我们没有项目运行成功后并没有一直在消耗CPU然后我们在项目中增加一些代码
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
consumeMethod();
}
});
}
private void consumeMethod() {
new Thread() {
@Override
public void run() {
super.run();
while (true) {
new String();
}
}
}.start();
}
}
点击button按钮后我们让程序死循环然后我们继续刷新CPU占用可以发现进程为 com.lixiang 占用了很多,但是我们需要是找到具体在哪里发生的
我们使用的是Android的DDMS,我们找到自己的Android SDK目录 到tools目录下找到monitor.bat点击运行会进入如下页面
手机里面运行的就是我们当前进程,我们选中进程
然后点击update Threads
出现如下页面点击OK
然后稍等几秒再点击 stop Method Profiling
结束之后我们可以看到如下页面
可以看到CPU占用最高的前几个我们点开可以看到内存消耗早MainActivity的run方法,以及创建空的String对象,就方法找到对应的代码在什么位置