android内存释放处理

不知道大家对android内存释放都做什么样的处理,本人接触android不久,最近开发小游戏的过程中,因为游戏界面组件较多,刚玩游戏的时候感觉还好,但是反复进入游戏界面玩几次之后,游戏就会卡顿,我瞬间就无语了,想来想去,还是内存占用没有得到释放,经过一番学习,虽然没有完全找到根源,但是已经缓解了很多,在这里说说我是怎么处理的吧,然后要是大家有自己好的处理方法,希望可以拿出来分享,这样大家就能一起进步了。接下来是我的一些做法:

首先,大多数占用内存的东西我知道的有(一般释放资源我都在onDestroy()里面做处理):

1.图片资源;

2.list占用;

3.数组占用;

4.其他一些定义的方法的占用;

5.线程回调,线程没有关闭问题。

面对这些问题,我分别采用的方法是:

1.图片资源回收

private void recycleBitmap( )

{

if(viewGroup != null)

{

int count =  viewGroup.getChildCount;

for(int i=0; i <count; i++ )

{

View view = viewGroup.getChildAt(i);

ImageView img = (ImageView)view.findViewById(R.id.Image);

if(img != null)

{

Drawable drawable = img.getDrawable( );

if(drawable != null)

{

if(drawable instanceof BitmapDrawable)

{

BitmapDrawable bitmapDrawable = (BitmapDrawable)drawable;

Bitmap bitmap = bitmapDrawable.getBitmap( );

if(bitmap != null)

bitmap.recycle( );

}

}

}

}

}

}

2.list占用:

方法:list.clear();然后在制空,不知道有没有这个必要,但是也就一句话,而且也没有异常,所以就顺便了;

3.数组占用:

方法:用完之后没有用了就制空;

4.其他一些定义的方法的占用:

方法:直接制空,如果方法内部有一些list或者数组之类的,我的处理方法是在定义的方法里面再定义一个释放资源的方法,然后在要释放资源的时候调用那个方法释放方法内部数据,在对其制空;

5.线程回调,线程没有关闭问题:

方法:移除回调mHandler.removeCallbacks(mMethod);

时间: 2024-09-27 19:01:57

android内存释放处理的相关文章

android内存优化-1-内存泄露

1.资源对象没关闭造成的内存泄漏 描述: 资源性对象比如(Cursor,File文件等)往往都用了一些缓冲,我们在不使用的时候,应该及时关闭它们,以便它们的缓冲及时回收内存.它们的缓冲不仅存在于java虚拟机内,还存在于java虚拟机外.如果我们仅仅是把它的引用设置为null,而不关闭它们,往往会造成内存泄漏.因为有些资源性对象,比如SQLiteCursor(在析构函数finalize(),如果我们没有关闭它,它自己会调close()关闭),如果我们没有关闭它,系统在回收它时也会关闭它,但是这样

Android内存那点事儿

好久没有写了,不是忘了,也不是懒,是因为迷茫了~~不知道该学什么,该写什么,该走什么样子的路,该做什么样子的人.我嘴笨,不知道怎么把自己会的讲给别人,我愿意分享,所以我就写出来,不管是对的,错的,希望大家能取其精华去其糟粕,不要因为我而误导诸位.废话不多说了~~ 你的应用内存泄漏了么? 要看是不是存在内存泄漏,首先我们要看到内存信息,如何看到内存信息呢?这里介绍一种方法,打开Eclipse连接手机,到DDMS中,选择要分析的应用,点击Update Heap也就是下图中1的图标,点击1图标之后会在

android 内存泄露调试

一.概述 1 二.Android(Java)中常见的容易引起内存泄漏的不良代码 1 (一) 查询数据库没有关闭游标 2 (二) 构造Adapter时,没有使用缓存的 convertView 3 (三) Bitmap对象不在使用时调用recycle()释放内存 4 (四) 释放对象的引用 4 (五) 其他 5 三.内存监测工具 DDMS --> Heap 5 四.内存分析工具 MAT(Memory Analyzer Tool) 7 (一) 生成.hprof文件 7 (二) 使用MAT导入.hpro

Android内存泄漏的本质原因、解决办法、操作实例

今年最后一个迭代终于结束了,把过程中碰到的不熟悉的东西拉出来学习总结一下 内存泄漏的本质是:[一个(巨大的)短生命周期对象的引用被一个长生命周期(异步生命周期)的对象持有] 这个东西分为两个部分 获得一个(巨大的)短生命周期的对象 这个[巨大的短生命周期的对象]在Android中最有可能的就是[Activity]了 最容易无意识获得它的方式就是[非静态内部类隐式自动持有外部类的强引用] 把这个对象赋值给了一个长生命周期的对象 这个有一些常见的套路 套路一:直接赋值给了一个类的静态成员 这个静态成

仿360加速球。(实现内存释放)

FloatCircleView的实现自定义view 创建WindowManager窗体管理类管理悬浮小球和底部大窗体 MyProgreeView手机底部窗体中小球的实现 FloatMenuView的实现 MyFloatService MainActivity的实现 现在手机上的悬浮窗应用越来越多,对用户来说,最常见的悬浮窗应用就是安全软件的悬浮小控件,拿360卫士来说,当开启悬浮窗时,它是一个小球,小球可以拖动,当点击小球出现大窗体控件,可以进行进一步的操作如:释放手机内存等等.于是借着慕课网的

android内存优化大全_上

转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 写在最前: 本文的思路主要借鉴了2014年AnDevCon开发者大会的一个演讲PPT,加上把网上搜集的各种内存零散知识点进行汇总.挑选.简化后整理而成. 所以我将本文定义为一个工具类的文章,如果你在ANDROID开发中遇到关于内存问题,或者马上要参加面试,或者就是单纯的学习或复习一下内存相关知识,都欢迎阅读.(本文最后我会尽量列出所参考的文章). 内存简介: RAM(random acc

android内存优化大全_中

转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 写在最前: 本文的思路主要借鉴了2014年AnDevCon开发者大会的一个演讲PPT,加上把网上搜集的各种内存零散知识点进行汇总.挑选.简化后整理而成. 所以我将本文定义为一个工具类的文章,如果你在ANDROID开发中遇到关于内存问题,或者马上要参加面试,或者就是单纯的学习或复习一下内存相关知识,都欢迎阅读.(本文最后我会尽量列出所参考的文章). OOM: 内存泄露可以引发很多的问题:

ANDROID内存优化(大汇总——全)

转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 写在最前: 本文的思路主要借鉴了2014年AnDevCon开发者大会的一个演讲PPT,加上把网上搜集的各种内存零散知识点进行汇总.挑选.简化后整理而成. 所以我将本文定义为一个工具类的文章,如果你在ANDROID开发中遇到关于内存问题,或者马上要参加面试,或者就是单纯的学习或复习一下内存相关知识,都欢迎阅读.(本文最后我会尽量列出所参考的文章). OOM: 内存泄露可以引发很多的问题:

android内存泄露调试,Heap,MAT

三.内存监测工具 DDMS --> Heap 无论怎么小心,想完全避免bad code是不可能的,此时就需要一些工具来帮助我们检查代码中是否存在会造成内存泄漏的地方.Android tools中的DDMS就带有一个很不错的内存监测工具Heap(这里我使用eclipse的ADT插件,并以真机为例,在模拟器中的情况类似).用Heap监测应用进程使用内存情况的步骤如下: 1. 启动eclipse后,切换到DDMS透视图,并确认Devices视图.Heap视图都是打开的: 2. 将手机通过USB链接至电