2019独角兽企业重金招聘Python工程师标准>>>

为什么要进行内存优化呢?其实我们可以反过来想。如果不进行内存优化会产生什么样的问题?

App的运行是有内存限制的,超过限制会产生OOM,导致App崩溃。如果内存不进行优化,运行的内存一旦超出了这个限制,就会导致程序的崩溃。程序的崩溃对于应用程序来说是一个非常严重的。如果App不进行内存优化,在流畅性、响应速度和用户体验上都会有很差的效果。

首先,我们来看一下内存的管理方式。

1、Android系统的内存分配和回收方式。

一个App通常就是一个进程对应一个虚拟机。GC只在heap剩余空间不足时,才会进行垃圾回收。GC触发时,所有的线程都会被暂停。

2、App内存限制机制。

每个App分配的最大内存限制,随着不同的设备而不同。吃内存大户是图片。App中用到的图片也很多。为什么要限制内存呢?我们的手机上有很多个应用。如果一个App把内存用光了,别的App就没有办法运行了。为了避免这种情况的出现,我们必须要限制App的内存。

3、切换应用时后台App清理机制。

App切换时的LRU Cache的方式进行应用间的切换。清理的时候系统会调用onTrimMemory()回调方法。

4、监控内存的几种方法。

其次,App内存的优化方法。

1、数据结构优化。

频繁字符串拼接用StringBuilder。ArrayMap、SparseArray替换HashMap。内存抖动。再小的class也要消耗0.5kb。HashMap一个entry需要额外占用32b。

2、对象复用。

复用系统自带的资源。ListView和GridView 的ConverView复用。避免在onDraw方法里执行对象的创建。

3、什么是内存泄漏,及其应对方法。

在逻辑上,某个内存块已经不用了。由于代码上的失误导致这块内存虽然停止不用了,但是依然被其他东西占用,使得GC无法对它进行回收。

内存泄漏会导致可用的Heap越来越少,频繁触发GC。尤其是Activity泄漏。用Application Context而不是Activity Context。注意Cursor对象是否及时关闭。

最后,OOM问题优化。

1、OOM问题分析。

必然性和可解决性。OOM绝大部分出现在图片上。

2、强引用、软引用的意义。

3、优化OOM问题的方法。

注意临时Bitmap对象的及时回收。避免BitMap的浪费。Try catch某些大内存的分配。加载Bitmap时候缩放比例、解码格式、局部加载。

转载于:https://my.oschina.net/u/2971691/blog/877169

App性能优化之内存优化相关推荐

  1. App性能优化(布局优化,线程优化,app瘦身优化,页面切换优化,App启动优化,内存优化)

    Android APP性能优化(最新总结) 在目前Android开发中,UI布局可以说是每个App使用频率很高的,随着UI越来越多,布局的重复性.复杂度也随之增长,这样使得UI布局的优化,显得至关重要 ...

  2. Android 系统性能优化(55)---Android 性能优化之内存优化

    Android 性能优化之内存优化 前言 Android App优化这个问题,我相信是Android开发者一个永恒的话题.本篇文章也不例外,也是来讲解一下Android内存优化.那么本篇文章有什么不同 ...

  3. Lua性能优化—Lua内存优化

    原文链接https://blog.uwa4d.com/archives/usparkle_luaperformance.html 这是侑虎科技第236篇原创文章,感谢作者舒航供稿,欢迎转发分享,未经作 ...

  4. Android App性能优化之内存优化

    为什么要进行内存优化? 1.App运行内存限制,OOM导致App崩溃 2.App性能:流畅性.响应速度和用户体验 Android的内存管理方式 Android系统内存分配与回收方式 ●   一个App ...

  5. Android面试-Android性能优化和内存优化、APP启动速度一线大厂的实战案例解析

    一.Android 内存管理机制 二.优化内存的意义 三.避免内存泄漏 四.优化内存空间 五.图片管理模块的设计与实现 六.总结 深入探索Android内存优化 第一章.重识内存优化 第二章.常见工具 ...

  6. Android性能优化之内存优化 1

    导语 智能手机发展到今天已经有十几个年头,手机的软硬件都已经发生了翻天覆地的变化,特别是Android阵营,从一开始的一两百M到今天动辄4G,6G内存.然而大部分的开发者观看下自己的异常上报系统,还是 ...

  7. Unity3D性能优化 之 内存优化篇

    性能优化主要围绕CPU.GPU和内存三大方面 之 内存优化篇 无论是游戏还是VR应用,内存管理都是其研发阶段的重中之重. 然而,在我们测评过的大量项目中,90%以上的项目都存在不同程度的内存使用问题. ...

  8. Android App优化:内存优化、电量优化、网络优化等 (2)

    -- 优化专题: 整理一系列的专题:比如APK瘦身.插件化.程序架构.性能优化.自定义view.增量升级.移动开发各种技术解决方案等.   Android后期发展的五大趋势:一.性能优化:二.高级UI ...

  9. 第八章 性能优化 之 内存优化(一)

    文章目录 (一)Android内存泄露 1.Java内存基础知识 1.1)JVM(java虚拟机:java程序运行环境)内存--栈.堆.方法区 1.2)垃圾回收机制 (1)什么是垃圾回收机制? (2) ...

最新文章

  1. 赠书 | 读懂生成对抗神经网络 GAN,看这文就够了
  2. 不错的Android开发网站
  3. XML 文档(0, 0)中有错误。缺少根元素。
  4. rabbitmq Clustering Guide--官方
  5. 魅族android6.0,【魅族魅蓝5s评测】迷人Flyme 安卓6.0提升流畅度_手机评测-中关村在线...
  6. 前端学习(1400):多人管理20代码优化
  7. CF #366(div.2) C 模拟,思维
  8. 徐州医科大学计算机报名,2019年徐州医科大学计算机等级考试准考证打印
  9. 双向链表基本实现简单贪吃蛇
  10. android imagebutton 动画,Android中ImageButton的三种点击效果—点击变化,点一次换一张,逐帧动画的实现...
  11. 计算机论文获奖证书,教改论文获奖证书-中国教育学会获奖证书评高级有用吗?...
  12. linux超级好用检索跳转工具hg:hyperlinked_grep (grep+kitty)
  13. 关于安装Python过程中 无法访问Windows Installer服务问题解决
  14. 分析黑客入侵 PostgreSQL 数据库
  15. 基于stm32之w5500以太网应用
  16. 郝健: Linux内存管理学习笔记-第1节课
  17. 一种快速毛玻璃虚化效果实现
  18. windows黑客编程技术之加密技术:windows自带的加密库
  19. h3c s5500 ssh v5 配置_H3C S5500 V5版本DHCP地址池静态分配命令
  20. 服务器芯片制冷,新一代元件级热管式自然冷却液冷技术的解决方案

热门文章

  1. MySQL千万级别大表如何优化?
  2. Myeclipse 6.5 优化
  3. 三点外接圆_故地重游伪切圆——伪外接圆的基本性质
  4. 解决VS'scanf':this function or variable may be unsafe.`(VS安全函数问题)
  5. sqliteorm的sync_schema介绍
  6. 解决:Error response from daemon: Get https://index.docker.io/v1/search?q=openjdkn=25: dial tcp: looku
  7. Mysql 无法插入中文,中文乱码解决
  8. Docker最全教程之MySQL容器化 (二十四)
  9. 虚拟环境vitualenv的使用
  10. 其他-私人♂收藏(比赛记录 Mar, 2019)