学习笔记(十)-内存优化

本文介绍了Android Studio提供的三种内存优化工具:MemoryMonitor、AllocationTracker及HeapDump与LeakCanary插件。MemoryMonitor用于监控应用程序内存使用情况,AllocationTracker帮助监视程序运行时的内存分配,而HeapDump与LeakCanary则专门用于检测和定位内存泄漏。

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

说实话,可能由于自己的水平不够,老师讲的有些东西自己并没有听懂,而且最近相当忙,又要写这些笔记,所以有些东西描述不清楚请大家原谅。
在学习之前,先说一下垃圾回收这一概念吧,自己首次是在Java中听说过的,但是由于java虚拟机自带垃圾回收机制,所以就没有太多关注。但是学习C和C++在做一些复杂程序的时候想必肯定熟悉,因为C和C++是要自己人为释放内存的。
Android Studio提供了三种工具帮助进行内存优化:

  • Memory Monitor
    Memory Monitor工具为监控工具,是一种发现型或者说监控性质的工具。
    在android studio的底部控制台可以找到。然后点击Monitors 我们可以看到一个坐标轴,横坐标记录从采集开始点到目前已经过去的时间,纵坐标是分配给App使用的内存总量,蓝色区域表示已分配使用的的,灰色区域表示空闲未使用的。在坐标轴的右边可以看见具体数值。

    GC是垃圾回收的意思,我们可以从Memory monitor看到何时发生了GC event,当一个内存短时间内发生掉落,我们可以认为发生了GC操作。你也可以手动触发GC,下图中的小车子就是触发GC的按钮,一旦按下就会回收那些没被引用的对象。
  • AllocationTracker
    同样,我们也可以在相同位置的旁边找到 AllocationTracker,它也可以帮助我们监视程序的运行,点击开始后,运行相关的android程序操作,然后完成操作后再次点击结束检测,这样我们就得到这一段时间内程序的运行状态的数据。面板左上角是所有历史数据文件列表,后面是详细信息。而且会有两个查看方式的选项:
    • Group by Method:用方法来分类我们的内存分配
    • Group by Allocator:用内存分配器来分类我们的内存分配

不同的选项,显示的信息会不同;
除此之外,还有一个比较酷的就是统计按钮;可以帮助我们统计相关数据;
这里写图片描述

  • HeapDump和LeakCanary

    HeapDump得到的数据可以帮助我们检查是否发生内存泄漏,点击dump java heap 这个按钮,然后Android Studio就开始干活了,然后我们可以观察对象的创建的个数和占用大小来发现是否发生泄漏。但是这种方法很不方面,所以我们可以借助LeakCanary插件;

LeakCanary会检测应用的内存回收情况,如果发现有垃圾对象没有被回收,就会去分析当前的内存快照,找到对象的引用链,并显示在页面上。这款插件的好处就是,可以在手机端直接查看内存泄露的地方,可以辅助我们检测内存泄露;
LeakCanary使用:

在build.gradle文件中添加

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

在应用的Application onCreate方法中添加LeakCanary.install(this),如下:

@Override
    public void onCreate() {
        super.onCreate(); 
        LeakCanary.install(this);
     }

这样我们就完成了,当发生内存泄露时,会有提示:

很方便!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值