Rumah  >  Soal Jawab  >  teks badan

Android中有什么好的查看代码性能的工具,类似内存泄漏,或者分析程序性能的工具?

PHP中文网PHP中文网2762 hari yang lalu748

membalas semua(6)saya akan balas

  • 怪我咯

    怪我咯2017-04-17 16:32:34

    傻瓜式 MAT (Memory Analyzer Tool), 更傻瓜式leakcanary

    balas
    0
  • PHP中文网

    PHP中文网2017-04-17 16:32:34

    查看app界面卡顿的BlockCanary, 内存泄露检测库leakcannary, 还有MAT等

    balas
    0
  • 巴扎黑

    巴扎黑2017-04-17 16:32:34

    卡死退出的话还是要看Log是crash还是ANR
    crash的话看backtrace来修复
    ANR的话主要就是把主线程里执行较长的动作放到子线程里去执行

    balas
    0
  • 迷茫

    迷茫2017-04-17 16:32:34

    ddms,看看函数执行的时间,traceview这个工具也行

    balas
    0
  • 高洛峰

    高洛峰2017-04-17 16:32:34

    楼主主要的问题是不知道都有什么地方在主线程使用了耗时操作,如果是这样,开启StrictMode无疑可以帮你很快找到需要关注的代码.
    StrictMode ,严苛模式,是 Android 提供的一种运行时检测机制,用于检测代码运行时的
    一些不规范的操作,最常见的场景是用于发现主线程的 IO 操作。
    StrictMode 包含两个维度的概念:
    Policy(策略): 是指 StrictMode 对一些违规操作的发现策略,分为两类:一类是针对一
    个具体的线程(ThreadPolicy),另一类是针对虚拟机的所有对象(VMPolicy)。
    Penalty(惩罚):是指 StrictMode 发现违规操作后进行惩罚的方式,譬如绘制红框、打
    印日志、显示对话框、杀掉进程等。
    Android 在很多关键的代码路径上都植入了 StrictMode, 譬如磁盘读写、网络访问、系统
    进程启动等。StrictMode 会根据设置的策略进行检查,如果某个进程在代码运行时出现了
    违规操作,那么就会受到”惩罚”。
    比如下面这段代码,如果有违规,就会在logcat打印违规操作的位置以及调用堆栈信息。
    android.app.Application的onCreate开启StickMode:

    public void onCreate() {
       if (DEVELOPER_MODE) {
          StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectAll().penaltyLog().build());
          StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectAll().penaltyLog().build());
       }
       super.onCreate();
     }

    balas
    0
  • 黄舟

    黄舟2017-04-17 16:32:34

    1.客户端推荐LeakCanary,OOM可以自测不用等到测试提出bug自己就可以提前解决。
    在 build.gradle 中加入引用,不同的编译使用不同的引用:

     dependencies {
       debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3'
       releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3'
     }
    

    在 Application 中:

    public class ExampleApplication extends Application {
      @Override public void onCreate() {
        super.onCreate();
        LeakCanary.install(this);
      }
    }
    

    2.还可以使用Android Studio里面的Dump Java Heap导出hprof文件,使用“hprof-conv xxxxx.hprof yyyyy.hprof”命令转换即可在MAT中分析,(其中xxxxx.hprof为原始文件,yyyyy.hprof为转换过后的文件)。

    balas
    0
  • Batalbalas