微软官方MSDN原版Win10系统下载

现在位置: 首页  > 系统教程  > 系统帮助

android如何优化内存

时间:2024-09-20 15:18:45   

大家好,今天Win10系统之家小编给大家分享「android如何优化内存」的知识,如果能碰巧解决你现在面临的问题,记得收藏本站或分享给你的好友们哟~,现在开始吧!

清理垃圾内存优化软件系列软件最新版本下载

1.如何优化android 手机内存的软件


  1、通过清理程序的缓存文件,释放的内存空间会让你喜出望外。
 2、进入手机设置选项,选择设置>应用程序>管理应用程序。
 3、按一下menu键,选择“按大小排序”选项(如果是android2.2手机先要选择已下载标签),然后就可以按照应用程序大小排列所有手机安装的应用程序。
 4、点击一款列表中的应用程序,如果程序有缓存文件可以显示大小,直接点击“清除缓存”选项就可以释放这些缓存文件占据的空间。
 5、有一些应用程序的缓存文件可能多达数mb,比如googlemaps,market,浏览器和相册程序,清理这几个程序的缓存文件就可以释放相当可观的空间。
 6、很多手机厂商都在旗下手机预装了自己开发的ui程序,比如htcsense,motoblur等,如果你打算使用launherpro或者adw这样的launcher程序替代htc
 sense,你可以清理甚至删除htcsense的数据文件,这个操作可以让你的手机多出几十mb空间。
 7、另外androidmarket还提供一些自动清除缓存文件的应用程序,比如quickappcleancache这款收费软件。对于已经取得root权限的手机用户,可以从mar
 ket下载cachecleaner,cachemate和movecache这些程序来快速方便的清除程序缓存文件。删除那些你从来不用或者很少使用的应用程序这是很多用户都会
 面对的问题,默默忍受着手机内存不足的报警,甚至牺牲系统性能,就是舍不得删除那些从来不用或者极少使用的应用程序,这可能也是一种强迫症。删除这些
 程序你会发现手机从此海阔天空,而且你没有任何损失。移动所以可以移动的应用程序数据到sd卡运行android2.2系统的手机支持安装应用程序到sd卡,确保
 检查所有你安装的应用程序如果支持appstosd卡功能一定要移动到sd卡,对于一些大型软件特别是游戏程序节省的容量相当可观。不过一定要注意widgets程
 序,捆绑widgets的程序,以及动态壁纸程序和那些需要在后台运行并且和系统进行交互的应用程序不要移动到sd卡存储,否则程序可能无法正常工作。如果
 觉得每个程序单独设置太麻烦,可以借助apps2sd和sdmove这样的程序简化操作过程。对于那些动手能力比较强的用户可以通过网上的教程设置应用程序默

2.在Android开发中,有哪些好的内存优化方式


  1. 使用更加轻量的数据结构
例如,我们可以考虑使用ArrayMap/SparseArray而不是HashMap等传统数据结构。通常的HashMap的实现方式更加消耗内存,因为它需要一个额外的实例对象来记录Mapping操作。另外,SparseArray更加高效,在于他们避免了对key与value的自动装箱(autoboxing),并且避免了装箱后的解箱。
2. 避免在Android里面使用Enum
Android官方培训课程提到过“Enums often require more than twice as much memory as static constants. You should strictly avoid using enums on Android.”,具体原理请参考《Android性能优化典范(三)》,所以请避免在Android里面使用到枚举。
3. 减小Bitmap对象的内存占用
Bitmap是一个极容易消耗内存的大胖子,减小创建出来的Bitmap的内存占用可谓是重中之重,,通常来说有以下2个措施: 
inSampleSize:缩放比例,在把图片载入内存之前,我们需要先计算出一个合适的缩放比例,避免不必要的大图载入。 
decode format:解码格式,选择ARGB_8888/RBG_565/ARGB_4444/ALPHA_8,存在很大差异
4.Bitmap对象的复用
缩小Bitmap的同时,也需要提高BitMap对象的复用率,避免频繁创建BitMap对象,复用的方法有以下2个措施 
LRUCache : “最近最少使用算法”在Android中有极其普遍的应用。ListView与GridView等显示大量图片的控件里,就是使用LRU的机制来缓存处理好的Bitmap,把近期最少使用的数据从缓存中移除,保留使用最频繁的数据, 
inBitMap高级特性:利用inBitmap的高级特性提高Android系统在Bitmap分配与释放执行效率。使用inBitmap属性可以告知Bitmap解码器去尝试使用已经存在的内存区域,新解码的Bitmap会尝试去使用之前那张Bitmap在Heap中所占据的pixel data内存区域,而不是去问内存重新申请一块区域来存放Bitmap。利用这种特性,即使是上千张的图片,也只会仅仅只需要占用屏幕所能够显示的图片数量的内存大小
4. 使用更小的图片
在涉及给到资源图片时,我们需要特别留意这张图片是否存在可以压缩的空间,是否可以使用更小的图片。尽量使用更小的图片不仅可以减少内存的使用,还能避免出现大量的InflationException。假设有一张很大的图片被XML文件直接引用,很有可能在初始化视图时会因为内存不足而发生InflationException,这个问题的根本原因其实是发生了OOM。
5.StringBuilder
在有些时候,代码中会需要使用到大量的字符串拼接的操作,这种时候有必要考虑使用StringBuilder来替代频繁的“+”。
6.避免在onDraw方法里面执行对象的创建
类似onDraw等频繁调用的方法,一定需要注意避免在这里做创建对象的操作,因为他会迅速增加内存的使用,而且很容易引起频繁的gc,甚至是内存抖动。
7. 避免对象的内存泄露
类的静态变量持有大数据对象
静态变量长期维持到大数据对象的引用,阻止垃圾回收。
非静态内部类存在静态实例
非静态内部类会维持一个到外部类实例的引用,如果非静态内部类的实例是静态的,就会间接长期维持着外部类的引用,阻止被回收掉。
资源对象未关闭
资源性对象比如(Cursor,File文件等)往往都用了一些缓冲,我们在不使用的时候,应该及时关闭它们, 以便它们的缓冲及时回收内存。它们的缓冲不仅存在于java虚拟机内,还存在于java虚拟机外。 如果我们仅仅是把它的引用设置为null,而不关闭它们,往往会造成内存泄露。 
解决办法: 比如SQLiteCursor(在析构函数finalize(),如果我们没有关闭它,它自己会调close()关闭), 如果我们没有关闭它,系统在回收它时也会关闭它,但是这样的效率太低了。 因此对于资源性对象在不使用的时候,应该调用它的close()函数,将其关闭掉,然后才置为null. 在我们的程序退出时一定要确保我们的资源性对象已经关闭。 程序中经常会进行查询数据库的操作,但是经常会有使用完毕Cursor后没有关闭的情况。如果我们的查询结果集比较小, 对内存的消耗不容易被发现,只有在常时间大量操作的情况下才会复现内存问题,这样就会给以后的测试和问题排查带来困难和风险,记得try catch后,在finally方法中关闭连接
Handler内存泄漏
Handler作为内部类存在于Activity中,但是Handler生命周期与Activity生命周期往往并不是相同的,比如当Handler对象有Message在排队,则无法释放,进而导致本该释放的Acitivity也没有办法进行回收。

3.android 性能优化有哪些办法


  性能优化的常用方法
  主要内容包括布局优化,绘制优化,内存泄露优化,相应速度优化,ListView优化,Bitmap优化,线程优化等,下面主要给你举了其中的几个例子:
  (1)布局优化
  布局优化的思想很简单,就是尽量减少布局文件的层级。
  如何进行优化呢?首先删除布局中无用的控件和层级,其次有选择地使用性能较低的ViewGroup,比如LinearLayout。如果布局中有的布局既可以用LinearLayout也可以用RelativeLayout,那就用LinearLayout,这是因为RelativeLayout比较复杂,他的布局过程花费更多的CPU时间。FrameLayout和LinearLayout一样都是一种简单高效的ViewGroup,因此可以考虑使用他们,但是很多时候,单纯的通过一个LinearLayout或者FrameLayout无法实现产品的效果,需要通过嵌套的方式来完成,这种情况建议采用RelativeLayout,因为ViewGroup的嵌套就相当于增加了布局的层级,同样会降低程序的性能。
  布局优化的另一种手段是采用<include>标枪,<merge>标签和ViewStub。<include>标签主要用于布局重用,<merge>标签一般和<include>配合使用,它可以减少布局的层级。而ViewStub则提供了按需加载功能,当需要时才将ViewStub中的布局加载到内存,这提高了程序的初始化效率。
  (2)绘制方法
  绘制优化是指View的onDraw方法避免执行大量的操作,这主要有两方面。
  首先,onDraw中不要创建新的布局对象,这是因为onDraw方法可能会被频繁调用,这样就会在一瞬间产生大量的临时对象,这不仅占用了过多的内存而且还会导致系统更加频繁的gc,降低了程序的执行效率。
  另一方面,onDraw方法中不要做耗时的任务,也不能执行成千上万次循环操作,尽管每次循环都很轻量级,但是大量的循环仍然十分抢占CPU的时间片,这会造成View的绘制过程不流畅。
  (3)内存泄露优化
  内存泄露在开发过程中是一个需要重视的问题,但是由于内存泄露问题对开发人员的经验和开发意识要求比较高,因此这是开发人员最容易犯的错误之一。内存泄露的优化分为两个方面,一方面是在开发过程中避免写出内存泄露的代码,另一方面通过一些分析工具比如MAT来找出潜在的内存泄露继而解决。
  关于性能优化的建议
  1.避免黄健过多对象;
  2.不要过多使用枚举,枚举占用的内存空间比整型大一些。
  3.常量使用static final 来修饰。
  4.使用一些Android特有的数据结构,比如SpareArray和Pair等,他们都具有更好的性能。
  5.适当使用软引用和弱引用。
  6.采用内存缓存和磁盘缓存
  7.尽量采用静态内部类,这样可以避免潜在的内部类而导致的内存泄漏。

以上就是关于「android如何优化内存」的全部内容,本文讲解到这里啦,希望对大家有所帮助。如果你还想了解更多这方面的信息,记得收藏关注本站~

Win10系统之家www.ghost580.net♀独家使♀用,未经允许不得转载!』

相关文章

  • android如何优化内存

    android如何优化内存

    1.如何优化android手机内存的软件1、通过清理程序的缓存文件,释放的内存空间会让你喜出望外。2、进入手机设置选项,选择设置>应用程序>管理应用程序。3、按一下menu键,选择“按大小排序”选项(如果是android2.2手机先要选择...
  • 如何优化关键词

    如何优化关键词

    1.关键词怎么优化?优化技巧:1.位置布局关键词的布局也是十分重要的,关键词是一篇文章的核心,可见关键词的重要性就不言而喻了。关键词出现在重要的位置或者采取重要的格式,所以在进行网站优化时,要留意关键词的位置布...
  • 关键词如何进行优化

    关键词如何进行优化

    1.关键词怎么优化?优化技巧:1.位置布局关键词的布局也是十分重要的,关键词是一篇文章的核心,可见关键词的重要性就不言而喻了。关键词出现在重要的位置或者采取重要的格式,所以在进行网站优化时,要留意关键词的位置布...
  • 关键词如何选择及如何优化

    关键词如何选择及如何优化

    1.选择关键词主要看哪几方面?应该怎样选择对优化好寻找几个相关的词语,可以是热点词语,也可以是非热点词语,然后查询百度指数(推荐使用站长之家出品的站长工具,因为它会给出你所搜索的词语的相关的一些词语的百度指...