Android的内存优化「建议收藏」

Android的内存优化

大家好,又见面了,我是全栈君。

腾讯公司在五月三十一日开展【腾讯Bugly移动开发人员沙龙】大会。大会上面叶方正老师解说了 关于Android的内存优化的问题,只是我感觉叶老师许多其它的站在了測试的角度上去解释了这一方面,叶老师给我们介绍了许多的工具去測试Android应用在各种情况下的内存占用情况。只是好像对我们开发的帮助并非特别的大。我在这里总结叶老师所说的重点和自己对内存优化的一些理解,希望可以对大家有所帮助。


Android应用优化主要集中在内存和UI流畅度上。从内存占用与泄露、UI流畅度的帧数和响应时间到IO的堵塞式响应时间等。
内存优化

首先。为什么要优化内存?主要体如今OOM(Out of Memory)和导致UI不流畅上。对于手机来说。内存是一个很稀缺的资源,即使是如今普遍拥有着很大内存的Android手机也不可避免。

而造成内存泄露或者说引发OOM主要是由于下面四个原因:

  • 1、万恶的Static(通常见到在单例模式)
  • 2、大胖子bitmap位图
  • 3、多线程生命周期过长。导致本该释放的资源没有的到释放
  • 4、变量生成没有被关闭(I/O流。Cursor)

这些原因都会导致我们的应用程序内存被大量的占用。知道了原因之后自然也就有个处理的办法。

应用之中假设存在大量的static变量。假设这些static的变量在Activity被结束的时候得不到销毁。那么它就会一直占用着内存空间,特别是一些数组。假设这些静态变量许多的话。那么它占用的内存就是一个很可观的数目。那么解决的方法是什么那?
1、除非这个变量会在整个应用之中被大量的反复使用
2、假设这个变量以后都不会再被使用到了。那么记得把他销毁掉

而对于bitmap位图我们可以通过BitmapFactory.Options的inSampleSize属性使他占用更小的空间。

第三个第四个问题,就仅仅能自己记得释放他。比方在onStop()或者onDestory()方法里面把它滞空。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116513.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 千万级敏感词过滤设计

    千万级敏感词过滤设计需求分析系统有千万级的禁词需要去过滤当中包含人名特殊符号组成的语句网址单字组合成的敏感词等等初步设计 1.解决千万级禁词存储及查找问题 2.解决被过滤文本内容过多问题详细设计 1.采用ES作为禁词库千万级数据检索时间在毫秒级满足需求 2.不适用分词器需要完整匹配分词后很多词都是合法的组合之后才是敏感词 3.被过滤文本内容分词不完整利用IK分词器分词结果不适合现…

    2022年5月30日
  • Virtualenv介绍、基本使用及在Pycharm下配置环境[通俗易懂]

    Virtualenv介绍、基本使用及在Pycharm下配置环境[通俗易懂]Virtualenv是一个创建独立Python运行环境的工具,主要解决Python软件开发过程中版本和依赖性问题。本文对Virtualenv做了简单的介绍、如何建立虚拟环境以及如何在Pycharm下配置Virtualenv环境

    2022年8月28日
  • edge 浏览器打开总跳向 hao.360

    edge 浏览器打开总跳向 hao.360edge浏览器突然每次打开都跳向hao.360.com注册表查找hao.360.com找不到发线每次调换都会 http://511zdqdkj.yc.anhuang.net先到这个域名拿这个域名搜索也找不到没办法通过改注册表的方式恢复用tengxun管家修改浏览器主页不生效win10升级win11不生效升到win11仍不生效,觉得没办法了就将hao.360.com解析到127.0.0.1至少不用看广告了。后面发现在win11下方的任务栏点击

    2022年7月26日
  • 服务器部署Nginx

    服务器部署Nginx服务器部署nginx简单明了

    2022年6月18日
  • PLD- FPGA与CPLD的区别[通俗易懂]

    PLD- FPGA与CPLD的区别[通俗易懂]http://home.eeworld.com.cn/my/space.php?uid=170289&do=blog&id=31215FPGA与CPLD的区别多篇整合系统的比较,与大家共享:尽管FPGA和CPLD都是可编程ASIC器件,有很多共同特点,但由于CPLD和FPGA结构上的差异,具有各自的特点:①CPLD更适合完成各种算法和组合逻辑,FPGA更适合于完成时序逻辑

    2022年5月27日
  • Java编码规范

    1.Java命名约定除了以下几个特例之外,命名时应始终采用完整的英文描述符。此外,一般应采用小写字母,但类名、接口名以及任何非初始单词的第一个字母要大写。1.1一般概念n尽量使用完整的

    2021年12月24日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号