Android studio 4.1.1上Memory Profiler的使用

基本介绍

  • 点击Android studio底部的Profiler

  • 选择当前进程

  • 选择“full”,否则白色虚线出不来,Allocated会显示“N/A”。
    在这里插入图片描述

  • 点击垃圾桶符号,可以强制GC

  • 缩放时间轴

不同内存分类的意思:
  • java 从java或kotlin代码分配的对象,所占的内存。
  • Native 从C/C++代码分配的对象,所占的内存。
  • Graphics 图形换出去队列,向屏幕显示像素所使用的内存。
  • Stack 应用中的原声栈和Java的栈使用的内存。它的大小与应用运行多少线程有关。
  • Code 处理代码(dex字节码,so库)和资源(图片、字体)的内存。
  • Others 系统不确定如何分类的内粗。
  • Allocated 应用分配的java或kotlin对象数量,这个数字不包含c/c++对象。

运行一个HelloWorld看看

  • 启动运行内存峰值:71.4M,native占到51.4M,java对象是3518个。

  • 紧接着内存迅速下降到:52.1M, native减少到32.1M,Java对象个数没变,说明C++对象数量减少了。

  • 30s后(时间不一定,页可能是1分钟后)进入平稳:47.8MB,native继续减少到27.7MB,java对象个数还是没有变。此时MainAcitivity的个数为1,TextView对象个数为2(helloworld和标题)。


  • 点击返回键,App退出。GC立即执行了, java对象减少很快。再试一次,java对象并没有减少多少。可以看出按返回键,进程并没有退出,内存仍然存在。

  • 再来一次强制GC,呀呵,内存还是没啥变化。

  • 执行命令adb shell am force-stop com.example.helloworld2,强杀进程,内存急剧下降为0。

猜你喜欢

转载自blog.csdn.net/zhangjin1120/article/details/121075652