Android避免Out of Memory问题【原创】

栏目: IOS · Android · 发布时间: 5年前

内容简介:Android中的out of memory问题,其实跟Java中的类似。主要的原因是对象一直存在内存中,无法被gc清理。在Java中内存对象分为强引用、软引用、弱引用、虚引用四类。我们大多数是用的是强引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。 当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。这也是问题的关键。处理这种问题有三个办法:

Android中的out of memory问题,其实跟 Java 中的类似。主要的原因是对象一直存在内存中,无法被gc清理。

在Java中内存对象分为强引用、软引用、弱引用、虚引用四类。我们大多数是用的是强引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。 当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。

这也是问题的关键。处理这种问题有三个办法:

1、释放强引用

其实就是在使用完对象后手动设置为null;

Object obj = new Object();
obj = null;

2、使用软引用

软引用是内存空间足够时,垃圾回收器就不会回收它;直到虚拟机报告内存不够时才会回收, 只要垃圾回收器没有回收它,该对象就可以被程序使用。

在jvm报告内存不足之前会清除所有的软引用,这样的话gc就可以收集到很多软引用释放出来的内存空间,从而解决内存吃紧的问题,避免内存溢出,什么时候被回收取决于gc的算法和gc运行时可用的内存大小。

SoftReference strSoft = new SoftReference(str);

3、使用弱引用

弱引用是在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间是否足够,都会回收它的内存。

WeakReference<String> strWeak = new WeakReference<String>(str);

在Android中,主要可能出现Out of Memory是在处理大图片时会出现。说到大图,第一想到的肯定是压缩,压缩了有的时候还是很占空间。但是对于图片操作的bitmap类,是个强引用。所以在使用完之后,还要对它进行手动释放回收。

if (!bitmapObject.isRecyled()) {
     bitmapObject.recycle();
     System.gc();
}

还有一个问题是图片的质量。Android中Bitmap有四种图片色彩模式:

  • ALPHA_8:每个像素需要占用内存中的1byte
  • RGB_565:每个像素需要占用内存中的2byte
  • ARGB_4444:每个像素需要占用内存中的2byte
  • ARGB_8888:每个像素需要占用内存中的4byte

创建Bitmap时,默认的色彩模式是ARGB_8888的,这种色彩模式是质量最高的,当然这样的模式占用的内存也最大。所以我们一般为了保证质量,使用RGB_565。

转载时请注明出处及相应链接,本文永久地址:https://blog.yayuanzi.com/25106.html

Android避免Out of Memory问题【原创】

Android避免Out of Memory问题【原创】 微信打赏

Android避免Out of Memory问题【原创】 支付宝打赏

感谢您对作者Bob的打赏,我们会更加努力!    如果您想成为作者,请点我


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Web视觉设计

Web视觉设计

Penny McIntire / 叶永彬 / 机械工业出版社 / 2008-08 / 56.00元

本书系统全面地介绍Web页面外观设计的相关知识。本书分为八章:导论、站点分析、导航、页面布局、色彩、图形、排版和表单。全面讲解网站界面所涉及的内容,叙述生动,由浅入深,提供了大量的示例代码以具体地说明如何运用所讨论的设计概念。. 本书可供Web开发技术人员和美工人员参考。...一起来看看 《Web视觉设计》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

html转js在线工具
html转js在线工具

html转js在线工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具