App性能优化之内存优化
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性能优化之内存优化相关推荐
- App性能优化(布局优化,线程优化,app瘦身优化,页面切换优化,App启动优化,内存优化)
Android APP性能优化(最新总结) 在目前Android开发中,UI布局可以说是每个App使用频率很高的,随着UI越来越多,布局的重复性.复杂度也随之增长,这样使得UI布局的优化,显得至关重要 ...
- Android 系统性能优化(55)---Android 性能优化之内存优化
Android 性能优化之内存优化 前言 Android App优化这个问题,我相信是Android开发者一个永恒的话题.本篇文章也不例外,也是来讲解一下Android内存优化.那么本篇文章有什么不同 ...
- Lua性能优化—Lua内存优化
原文链接https://blog.uwa4d.com/archives/usparkle_luaperformance.html 这是侑虎科技第236篇原创文章,感谢作者舒航供稿,欢迎转发分享,未经作 ...
- Android App性能优化之内存优化
为什么要进行内存优化? 1.App运行内存限制,OOM导致App崩溃 2.App性能:流畅性.响应速度和用户体验 Android的内存管理方式 Android系统内存分配与回收方式 ● 一个App ...
- Android面试-Android性能优化和内存优化、APP启动速度一线大厂的实战案例解析
一.Android 内存管理机制 二.优化内存的意义 三.避免内存泄漏 四.优化内存空间 五.图片管理模块的设计与实现 六.总结 深入探索Android内存优化 第一章.重识内存优化 第二章.常见工具 ...
- Android性能优化之内存优化 1
导语 智能手机发展到今天已经有十几个年头,手机的软硬件都已经发生了翻天覆地的变化,特别是Android阵营,从一开始的一两百M到今天动辄4G,6G内存.然而大部分的开发者观看下自己的异常上报系统,还是 ...
- Unity3D性能优化 之 内存优化篇
性能优化主要围绕CPU.GPU和内存三大方面 之 内存优化篇 无论是游戏还是VR应用,内存管理都是其研发阶段的重中之重. 然而,在我们测评过的大量项目中,90%以上的项目都存在不同程度的内存使用问题. ...
- Android App优化:内存优化、电量优化、网络优化等 (2)
-- 优化专题: 整理一系列的专题:比如APK瘦身.插件化.程序架构.性能优化.自定义view.增量升级.移动开发各种技术解决方案等. Android后期发展的五大趋势:一.性能优化:二.高级UI ...
- 第八章 性能优化 之 内存优化(一)
文章目录 (一)Android内存泄露 1.Java内存基础知识 1.1)JVM(java虚拟机:java程序运行环境)内存--栈.堆.方法区 1.2)垃圾回收机制 (1)什么是垃圾回收机制? (2) ...
最新文章
- 赠书 | 读懂生成对抗神经网络 GAN,看这文就够了
- 不错的Android开发网站
- XML 文档(0, 0)中有错误。缺少根元素。
- rabbitmq Clustering Guide--官方
- 魅族android6.0,【魅族魅蓝5s评测】迷人Flyme 安卓6.0提升流畅度_手机评测-中关村在线...
- 前端学习(1400):多人管理20代码优化
- CF #366(div.2) C 模拟,思维
- 徐州医科大学计算机报名,2019年徐州医科大学计算机等级考试准考证打印
- 双向链表基本实现简单贪吃蛇
- android imagebutton 动画,Android中ImageButton的三种点击效果—点击变化,点一次换一张,逐帧动画的实现...
- 计算机论文获奖证书,教改论文获奖证书-中国教育学会获奖证书评高级有用吗?...
- linux超级好用检索跳转工具hg:hyperlinked_grep (grep+kitty)
- 关于安装Python过程中 无法访问Windows Installer服务问题解决
- 分析黑客入侵 PostgreSQL 数据库
- 基于stm32之w5500以太网应用
- 郝健: Linux内存管理学习笔记-第1节课
- 一种快速毛玻璃虚化效果实现
- windows黑客编程技术之加密技术:windows自带的加密库
- h3c s5500 ssh v5 配置_H3C S5500 V5版本DHCP地址池静态分配命令
- 服务器芯片制冷,新一代元件级热管式自然冷却液冷技术的解决方案
热门文章
- MySQL千万级别大表如何优化?
- Myeclipse 6.5 优化
- 三点外接圆_故地重游伪切圆——伪外接圆的基本性质
- 解决VS'scanf':this function or variable may be unsafe.`(VS安全函数问题)
- sqliteorm的sync_schema介绍
- 解决:Error response from daemon: Get https://index.docker.io/v1/search?q=openjdkn=25: dial tcp: looku
- Mysql 无法插入中文,中文乱码解决
- Docker最全教程之MySQL容器化 (二十四)
- 虚拟环境vitualenv的使用
- 其他-私人♂收藏(比赛记录 Mar, 2019)