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(检查)

回想检查你的程序。看看设计或代码有什么不合理的地方。

图片像素:

Android中图片有四种属性。各自是:

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的演示样例代码片段。

  1. // 先推断是否已经回收
  2. if(bitmap != null && !bitmap.isRecycled()){
  3. // 回收而且置为null
  4. bitmap.recycle();
  5. bitmap = null;
  6. }
  7. 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 内存优化的更多相关文章

  1. 大礼包!ANDROID内存优化(大汇总)

    写在最前: 本文的思路主要借鉴了2014年AnDevCon开发者大会的一个演讲PPT,加上把网上搜集的各种内存零散知识点进行汇总.挑选.简化后整理而成. 所以我将本文定义为一个工具类的文章,如果你在A ...

  2. ANDROID内存优化——大汇总(转)

    原文作者博客:转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! ANDROID内存优化(大汇总——上) 写在最前: 本文的思路主要借鉴了20 ...

  3. Android内存优化之——static使用篇(使用MAT工具进行分析)

    这篇文章主要配套与Android内存优化之——static使用篇向大家介绍MAT工具的使用,我们分析的内存泄漏程序是上一篇文章中static的使用内存泄漏的比较不容易发现泄漏的第二情况和第三种情况—— ...

  4. ANDROID内存优化(大汇总——中)

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 写在最前: 本文的思路主要借鉴了2014年AnDevCon开发者大会的一个演讲PPT,加上 ...

  5. 【腾讯Bugly干货分享】Android内存优化总结&实践

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/2MsEAR9pQfMr1Sfs7cPdWQ 导语 智 ...

  6. Android内存优化(三)详解内存分析工具MAT

    前言 在这个系列的前四篇文章中,我分别介绍了DVM.ART.内存泄漏和内存检测工具的相关知识点,这一篇我们通过一个小例子,来学习如何使用内存分析工具MAT. 1.概述 在进行内存分析时,我们可以使用M ...

  7. Android内存优化1 了解java内存分配 1

    开篇废话 今天我们一起来学习JVM的内存分配,主要目的是为我们Android内存优化打下基础. 一直在想以什么样的方式来呈现这个知识点才能让我们易于理解,最终决定使用方法为:图解+源代码分析. 欢迎访 ...

  8. Android内存优化(二)DVM和ART的GC日志分析

    相关文章 Android内存优化系列 Java虚拟机系列 前言 在Java虚拟机(三)垃圾标记算法与Java对象的生命周期这篇文章中,提到了Java虚拟机的GC日志.DVM和ART的GC日志与Java ...

  9. Android内存优化(一)DVM和ART原理初探

    相关文章 Android内存优化系列 Java虚拟机系列 前言 要学习Android的内存优化,首先要了解Java虚拟机,此前我用了多篇文章来介绍Java虚拟机的知识,就是为了这个系列做铺垫.在And ...

  10. Android内存优化大全(中)

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 写在最前: 本文的思路主要借鉴了2014年AnDevCon开发者大会的一个演讲PPT,加上 ...

随机推荐

  1. HibernateDaoSupport的getSession()与HibernateTemplate的区别

    在 Spring+Hibernate的集成环境里,如果DAO直接使用HibernateDaoSupport的getSession()方法获取 session进行数据操作而没有显式地关闭该session ...

  2. Windows SVN变更发送邮件通知(JAVA实现)

    之前有过一篇python的实现http://blog.csdn.net/wiker_yong/article/details/10334967 1,新增文件post-commit.bat 内容: re ...

  3. 刚子扯谈:源于Chanel的图片描述

    文/刚子 2013年8月9日 北京晴 猴晒猴晒 开片语:真心不知道今天该分享点啥?先扯几句牢骚,我个人认为对朋友也够意思,虽然他们有的时候挺操蛋的,虽然还简称哥们儿,虽然还一起交流,但已经变成了无谓的 ...

  4. Codeforces Round #256 (Div. 2/C)/Codeforces448C_Painting Fence(分治)

    解题报告 给篱笆上色,要求步骤最少,篱笆怎么上色应该懂吧,.,刷子能够在横着和竖着刷,不能跳着刷,,, 假设是竖着刷,应当是篱笆的条数,横着刷的话.就是刷完最短木板的长度,再接着考虑没有刷的木板,,. ...

  5. Python学习笔记(十五):类基础

    以Mark Lutz著的<Python学习手册>为教程,每天花1个小时左右时间学习,争取两周完成. --- 写在前面的话 2013-7-24 23:59 学习笔记 1,Python中的大多 ...

  6. android入门——BroadCast(1)

    使用广播要定义一个广播接收类,如 package com.example.wkp.broadcast; import android.content.BroadcastReceiver; import ...

  7. TextView 为部分文字添加下划线,并实现单击事件

    在开发应用的过程中经常会遇到显示一些不同的字体风格的信息,如关键词高亮显示的等.对于类似的情况,一般我们会想着使用多个TextView去实现,对于每个TextView设置不同的字体风格来满足需求.   ...

  8. 混淆篇之原生DOM操作方法小结

    1.0   DOM结构 1.1先来看结构图: 父节点        兄弟节点        当前节点            属性节点            子节点        兄弟节点一般任意一个节 ...

  9. C++_关键字

    const static extern 限制-对象隐式类型转换

  10. 内存管理之三——Cocos2d-x学习历程(七)

    1.容器---2.0版本 Cocos2d-x引擎为我们提供了CCArray.CCDictionary等Objective-C风格的容器.使用Cocos2d-x容器的一个重要原因在于Cocos2d-x的 ...