Android面试之内存溢出解决
来源:互联网 发布:练五笔打字的软件 编辑:程序博客网 时间:2024/06/13 09:14
1.内存引用
释放强引用
Object obj = new Object();
我们声明完,使用完就不管了,认为垃圾回收器会回收对象指向的内存空间
只要对象被引用,垃圾回收器就不会回收
object = null;
之后,垃圾回收器会在一定时候回收
2.图像处理
(1)通常比较大的图像会在内存里压缩,
Options bitmapFactoryOptions = new BitmapFactory.Options();
bitmapFactoryOptions.onSampleSize=2;
bmap = BitmapFactory.decodeFile(picture.getAbsolutePath(),
bitmapFactoryOptions);
通过路径装载图像时,要指定第二个参数bitmapFactoryOptions,指定压缩比例
在内存中按一定比例压缩,2就是按常宽的50%压缩
比较大的图片不压缩一定会溢出的,一两兆的图片就会内存溢出
系统为每个安卓应用分配内存,而不是把整个内存都分配。对于每个app分配的内存比较少
装载比较大的图片就会内存严重不足
电脑上可以申请虚拟内存,移动设备上没有,不够就是不够,造成Out of Memory
所以装载大图像要进行压缩。1024*768可以按4或8压缩
(2)图片用完时,外部释放了,但是内部有些空间没有释放(内部C语言实现的地方)
if(bitmapObject.isRecycled()==false)
{
bitmapObject.recyle();
system.gc()//提醒gc回收
}
system.gc()并不马上回收,devic虚拟机会在合适的时候回收
3.VMRuntime
2.3以前提供,不需要掌握
http://www.importnew.com/8715.html
如何阻止内存泄漏?
以下是一些阻止内存泄漏的快速动手技巧。
(1)注意集合类,例如HashMap,ArrayList,等等。因为它们是内存泄漏经常发生的地方。当它们被声明为静态时,它们的生命周期就同应用程序的生命周期一般长。
(2)注意事件监听器和回调,如果一个监听器已经注册,但是当这个类不再被使用时却未被注销,就会发生内存泄漏。
(3)“如果一个类管理它自己的内存,程序员应该对内存泄漏保持警惕。”[1] 很多时候当一个对象的成员变量指向其他对象时,不再使用时需要被置为null。
1.什么是内存泄漏?
内存泄漏的定义: 对象不再被应用程序使用,但是垃圾回收器却不能移除它们,因为它们正在被引用。
- Android面试之内存溢出解决
- Android基础之内存溢出
- 面试之内存溢出的解决方案
- 病中吟之内存溢出
- Android之内存溢出(Out Of Memory)的总结
- Android编程之内存溢出解决方案(OOM)实例总结
- Android之内存泄露、内存溢出、内存抖动分析
- 知识积累之内存溢出
- 面试准备之内存对齐
- linux面试之内存管理
- android 之内存泄漏
- Android之内存管理
- Android之内存管理
- android之内存操作
- Android之内存泄露
- Android之内存泄露
- Android之内存优化
- tomcat之内存溢出两张情况
- pentesterlab学习记录-week1
- linux网络编程一:主机字节序与网络字节序的的判断
- 误删资料恢复
- Oracle的Package的作用
- java 字节流与字符流的区别
- Android面试之内存溢出解决
- Ui学习笔记---EasyUI的EasyLoader组件源码分析
- KNN算法(邻近算法)
- Java8新特性教程
- Java Android 基础概念
- 贪心算法详解
- 高级函数定义(下拉列表)
- Unblock Youku无法使用的解决方案
- C#语言特性