热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android内存优化笔记

前一段时间接手了一个新的项目,看友盟后台有好多OOM,而且滑动起来也很不流畅。我便对此产生了好奇。花了一段时间把内存这个彻彻底底的研究了一下,在此总结一下怎么样才能把app的内存占

前一段时间接手了一个新的项目,看友盟后台有好多OOM,而且滑动起来也很不流畅。我便对此产生了好奇。花了一段时间把内存这个彻彻底底的研究了一下,在此总结一下怎么样才能把app的内存占用降低下去。

题外话:推荐一个非常好用的开源项目 leakcanary只要加短短两句话,内存泄露非常直白就被展现出来了。

内存溢出基本上大部分都是内存泄露导致的,泄露泄露泄露最后超出最大内存限制然后就OOM了,下面介绍两个快速缓解(注意是缓解)OOM的办法:

1、 当然如果你的app确实需要展示很多图片,那么建议你在Manifest中加入Android:largeHeap=true , 那么你的程序在3.0以后就可以使用256兆内存(并不推荐用这个方法解决oom问题,但是这个却是最快的)。
2、 ImageLoader RGB_565 要比 RGB_8888 省好多好多的内存…不了解的可以百度一下(同时建议用glide替换Imageloader,好处有很多,例如绑定生命周期之类云云)。

**可能造成项目内存泄露的地方: **

  • 1 WebView内存泄露 (xml中注册)
  • 2 Dialog 内存泄露 (横竖屏切换)
  • 3 数据库操作 (游标,事务等)
  • 4 bitmap 没释放 (Native 操作bitmap)
  • 5 handler 内存泄露 (Activity 被关闭)
  • 6 单例持有Activity对象导致内存泄露 (会阻止被回收)
  • 7 广播没有unregister (之类需要解绑操作的)
  • 8 File 输入输出流操作 (注意加 finally)
  • 9 没有缓存 convertView (越滑越卡)

这些就是可能造成内存泄露最终导致内存溢出的地方,以后会慢慢补充,关于下列两点我后续会继续po文章讲解决办法:

  • WebView内存泄露以及解决办法。
  • handler内存泄露的原因以及解决办法。

欢迎访问我的博客:Wells’Note。欢迎留言讨论。


推荐阅读
  • 本文详细介绍了Android中的坐标系以及与View相关的方法。首先介绍了Android坐标系和视图坐标系的概念,并通过图示进行了解释。接着提到了View的大小可以超过手机屏幕,并且只有在手机屏幕内才能看到。最后,作者表示将在后续文章中继续探讨与View相关的内容。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 初识java关于JDK、JRE、JVM 了解一下 ... [详细]
  • HashMap的规约JavaDocs中HashMap的spec是这么写的:Hashtablebased implementationoftheMapinterface.Thisim ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • vue使用
    关键词: ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • JVM 学习总结(三)——对象存活判定算法的两种实现
    本文介绍了垃圾收集器在回收堆内存前确定对象存活的两种算法:引用计数算法和可达性分析算法。引用计数算法通过计数器判定对象是否存活,虽然简单高效,但无法解决循环引用的问题;可达性分析算法通过判断对象是否可达来确定存活对象,是主流的Java虚拟机内存管理算法。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • java实例,java实例化对象的方法
    本文目录一览:1、java中实例和对象有什么区别 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了预加载多个本地WebView相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 安卓开发入门!BAT大厂面试基础题集合,顺利通过阿里Android岗面试
    其实不是Android不行了,而是你跟不上了我的很多读者都在反馈说,现在一个岗位可以收到的简历数,是前几年的几倍。我们必须承认ÿ ... [详细]
author-avatar
苦逼的码农
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有