android 内存优化
OOM
内存泄漏引起很多问题:
1:节目卡顿。反应慢(高内存使用情况JVM 虚拟机的频繁离职GC)
2:消失
3:直接崩溃
ANDROID 内存面临的问题
1: 有限的堆内存,原始仅仅有16M
2:内存大小消耗等依据设备。操作系统等级。尺寸的不同而不同
3:程序不能直接控制
4:支持后台多任务处理
5:执行在虚拟机之上
5R
1.Reckon(计算)
首先须要知道你的app所消耗内存的情况,知己知彼才干百战不殆
2.Reduce(降低)
消耗更少的资源
3.Reuse(重用)
当第一次使用完以后,尽量给其它的使用
5.Recycle(回收)
回收资源
4.Review(检查)
回想检查你的程序。看看设计或代码有什么不合理的地方。
1.Reckon(计算)
首先须要知道你的app所消耗内存的情况,知己知彼才干百战不殆
2.Reduce(降低)
消耗更少的资源
3.Reuse(重用)
当第一次使用完以后。尽量给其它的使用
5.Recycle(回收)
回收资源
4.Review(检查)
回想检查你的程序,看看设计或代码有什么不合理的地方。
Reduce :
reduce 意思就是降低。直接降低内存的使用。是最有效的优化方法
Bitmap:
Bitmap 是内存消耗大户,绝大多数的OOM崩溃都是在操作Bitmap 时产生的以下看看几个处理图片的方法
图片显示:
我们须要依据需求去载入图片大小
比如在列表中仅用于预览时载入缩略图
仅仅有当用户点击具体条目想看具体信息的时候。这时另启动一个fragement /activity 对话框等等。去显示整个图片
1.Reckon(计算)
首先须要知道你的app所消耗内存的情况,知己知彼才干百战不殆
2.Reduce(降低)
消耗更少的资源
3.Reuse(重用)
当第一次使用完以后,尽量给其它的使用
5.Recycle(回收)
回收资源
4.Review(检查)
回想检查你的程序,看看设计或代码有什么不合理的地方。
图片大小:
直接使用ImageView显示bitmap会占用较多资源,特别是图片较大的时候,可能导致崩溃。
使用BitmapFactory.Options设置inSampleSize, 这样做能够降低对系统资源的要求。
属性值inSampleSize表示缩略图大小为原始图片大小的几分之中的一个,即假设这个值为2。则取出的缩略图的宽和高都是原始图片的1/2,图片大小就为原始大小的1/4。
1.Reckon(计算)
首先须要知道你的app所消耗内存的情况,知己知彼才干百战不殆
2.Reduce(降低)
消耗更少的资源
3.Reuse(重用)
当第一次使用完以后,尽量给其它的使用
5.Recycle(回收)
回收资源
4.Review(检查)
回想检查你的程序。看看设计或代码有什么不合理的地方。
图片像素:
ALPHA_8:每一个像素占用1byte内存
ARGB_4444:每一个像素占用2byte内存
ARGB_8888:每一个像素占用4byte内存 (默认)
RGB_565:每一个像素占用2byte内存
1.Reckon(计算)
首先须要知道你的app所消耗内存的情况,知己知彼才干百战不殆
2.Reduce(降低)
消耗更少的资源
3.Reuse(重用)
当第一次使用完以后,尽量给其它的使用
5.Recycle(回收)
回收资源
4.Review(检查)
回想检查你的程序,看看设计或代码有什么不合理的地方。
图片回收:
使用Bitmap过后,就须要及时的调用Bitmap.recycle()方法来释放Bitmap占用的内存空间,而不要等Android系统来进行释放。
以下是释放Bitmap的演示样例代码片段。
- // 先推断是否已经回收
- if(bitmap != null && !bitmap.isRecycled()){
- // 回收而且置为null
- bitmap.recycle();
- bitmap = null;
- }
- System.gc()
1.Reckon(计算)
首先须要知道你的app所消耗内存的情况,知己知彼才干百战不殆
2.Reduce(降低)
消耗更少的资源
3.Reuse(重用)
当第一次使用完以后,尽量给其它的使用
5.Recycle(回收)
回收资源
4.Review(检查)
回想检查你的程序,看看设计或代码有什么不合理的地方。
究竟什么时候使用软引用,什么时候使用弱引用呢?
个人觉得。假设仅仅是想避免OutOfMemory异常的发生。则能够使用软引用。假设对于应用的性能更在意,想尽快回收一些占用内存比較大的对象,则能够使用弱引用。
还有就是能够依据对象是否常常使用来推断。假设该对象可能会常常使用的,就尽量用软引用。假设该对象不被使用的可能性更大些,就能够用弱引用。
另外,和弱引用功能类似的是WeakHashMap。WeakHashMap对于一个给定的键。其映射的存在并不阻止垃圾回收器对该键的回收。回收以后,其条目从映射中有效地移除。
WeakHashMap使用ReferenceQueue实现的这样的机制。
1.Reckon(计算)
首先须要知道你的app所消耗内存的情况。知己知彼才干百战不殆
2.Reduce(降低)
消耗更少的资源
3.Reuse(重用)
当第一次使用完以后,尽量给其它的使用
5.Recycle(回收)
回收资源
4.Review(检查)
回想检查你的程序。看看设计或代码有什么不合理的地方。
http://blog.csdn.net/a396901990/article/details/38707007
1.Reckon(计算)
首先须要知道你的app所消耗内存的情况,知己知彼才干百战不殆
2.Reduce(降低)
消耗更少的资源
3.Reuse(重用)
当第一次使用完以后,尽量给其它的使用
5.Recycle(回收)
回收资源
4.Review(检查)
回想检查你的程序。看看设计或什么是不合理的代码。
版权声明:本文博主原创文章,博客,未经同意不得转载。
android 内存优化的更多相关文章
- 大礼包!ANDROID内存优化(大汇总)
写在最前: 本文的思路主要借鉴了2014年AnDevCon开发者大会的一个演讲PPT,加上把网上搜集的各种内存零散知识点进行汇总.挑选.简化后整理而成. 所以我将本文定义为一个工具类的文章,如果你在A ...
- ANDROID内存优化——大汇总(转)
原文作者博客:转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! ANDROID内存优化(大汇总——上) 写在最前: 本文的思路主要借鉴了20 ...
- Android内存优化之——static使用篇(使用MAT工具进行分析)
这篇文章主要配套与Android内存优化之——static使用篇向大家介绍MAT工具的使用,我们分析的内存泄漏程序是上一篇文章中static的使用内存泄漏的比较不容易发现泄漏的第二情况和第三种情况—— ...
- ANDROID内存优化(大汇总——中)
转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 写在最前: 本文的思路主要借鉴了2014年AnDevCon开发者大会的一个演讲PPT,加上 ...
- 【腾讯Bugly干货分享】Android内存优化总结&实践
本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/2MsEAR9pQfMr1Sfs7cPdWQ 导语 智 ...
- Android内存优化(三)详解内存分析工具MAT
前言 在这个系列的前四篇文章中,我分别介绍了DVM.ART.内存泄漏和内存检测工具的相关知识点,这一篇我们通过一个小例子,来学习如何使用内存分析工具MAT. 1.概述 在进行内存分析时,我们可以使用M ...
- Android内存优化1 了解java内存分配 1
开篇废话 今天我们一起来学习JVM的内存分配,主要目的是为我们Android内存优化打下基础. 一直在想以什么样的方式来呈现这个知识点才能让我们易于理解,最终决定使用方法为:图解+源代码分析. 欢迎访 ...
- Android内存优化(二)DVM和ART的GC日志分析
相关文章 Android内存优化系列 Java虚拟机系列 前言 在Java虚拟机(三)垃圾标记算法与Java对象的生命周期这篇文章中,提到了Java虚拟机的GC日志.DVM和ART的GC日志与Java ...
- Android内存优化(一)DVM和ART原理初探
相关文章 Android内存优化系列 Java虚拟机系列 前言 要学习Android的内存优化,首先要了解Java虚拟机,此前我用了多篇文章来介绍Java虚拟机的知识,就是为了这个系列做铺垫.在And ...
- Android内存优化大全(中)
转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 写在最前: 本文的思路主要借鉴了2014年AnDevCon开发者大会的一个演讲PPT,加上 ...
随机推荐
- Silverlight中无法设置卫星程序集为中立资源程序集
熟悉.Net资源文件体系的人都知道,中立资源程序集(Neutral Resource Assembly)的作用在于,一旦指定语言文化(Culture)的资源查找不到,便会Fallback到中立资源程序 ...
- git创建与合并分支
创建与合并分支 在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在Git里,这个分支叫主分 支,即master分支.HEAD严格来 ...
- 2014第11周一word样式
今天摸索使用了word的样式替换功能感觉不错,简单记录下: 1.将某一个样式的标题统一替换为另一样式,之前一般是格式化一个个找到标题设置格式, 今天才发现可以选中标题->在浮动框上单击样式或开始 ...
- CGFloat,CGPoint,CGSize,CGRect
1.数据类型: CGFloat: 浮点值的基本类型 CGPoint: 表示一个二维坐标系中的点 CGSize: 表示一个矩形的宽度和高度 CGRect: 表示一个矩形的位置和大小 typedef fl ...
- MD5 32位、16位加密
/// <summary> /// MD5 16位加密 /// </summary> /// <param name="ConvertString"& ...
- 全国计算机等级考试二级教程-C语言程序设计_第15章_位运算
位运算,不适用于实数,仅仅适用于整数.字符. C语言的位运算只能操作整数.字符,实数是指数方式表示的,不适用于位运算. #define _CRT_SECURE_NO_WARNINGS #include ...
- 使用过渡场景在多个场景的切换COCOS2D(4)
CCNode有三个方法,使用CCDirector的replaceScene方法替换场景时,每个节点都会调用这三个方法: onEnter与onExit方法在改变场景过程中的特定时刻被调用,这取决于是否使 ...
- iOS动画技术笔记
概述 在IOS开发中,实现动画操作的地方有很多,典型的是在视图控制器的segue操作时.在同一个视图控制器类中,加载切换不同的视图时,也需要动画效果,还有一些视图对象有动画效果会更好. 插一句,在IO ...
- Zookeeper介绍
Zookeeper是一个分布式的开源系统,目的是为分布式应用提供协调一致性服务. 分布式应用可以在Zookeeper提供的简单原语集之上构造更高层次的服务.比如统一命名服务.状态同步服务.集群管理.分 ...
- JavaScript 中的面向对象的初步认识
我在学习JS的面向对象编程的时候,总是有两个奇怪的问题. 第一个就是:面向对象在JS中很少用到... 可能是目前自己做的项目还是比较简单,前端方面的任务我几乎都是用面向过程的方式写的,所以就导致,我啃 ...