android内存溢出 java.lang.OutOfMemoryError
来源:互联网 发布:汽车行业的大数据应用 编辑:程序博客网 时间:2024/05/02 01:26
感觉做android平台的电视产品,就是一个要和OOM作斗争的路。
一个GridView,一张图片几百KB,刷几页就上百M了。
试过一些优化的办法,解决这个问题真的是个漫长的过程。
方法1:等比例缩小图片
图片质量会变成原来的四分之一
BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = 4
方法2:对图片采用软引用,及时地进行recyle()操作
有一定作用,但是有时会空指针
SoftReference<Bitmap> bitmap; bitmap = new SoftReference<Bitmap>(pBitmap); if(bitmap != null){ if(bitmap.get() != null && !bitmap.get().isRecycled()){ bitmap.get().recycle(); bitmap = null; } }
方法3 : 对复杂的listview进行合理设计与编码(个人感觉这个靠谱点)1. 注意重用Adapter里面的convertView,以及holder机制的运用
上述方法尝试还未成功,可用 lazy loading data
这个一般熟手都知道使用,应该有一些办法
public View getView(int position, View convertView, ViewGroup parent) {if (convertView == null) { v = mInflater.inflate(resource, parent, false); final int[] to = mTo; final int count = to.length; final View[] holder = new View[count]; for (int i = 0; i < count; i++) { holder[i] = v.findViewById(to[i]); } v.setTag(holder); } else { } }
方法4 : 单个页面,横竖屏切换N次后 OOM
1. 看看页面布局当中有没有大的图片,比如背景图之类的。去除xml中相关设置,改在程序中设置背景图(放在onCreate()方法中):
尽量不使用静态的图片和全局性的图片
在Activity destory时注意,bg.setCallback(null); 防止Activity得不到及时的释放。
Drawable bg = getResources().getDrawable(R.drawable.bg);XXX.setBackgroundDrawable(rlAdDetailone_bg);
方法5:在页面切换时尽可能少地重复使用一些代码。比如:重复调用数据库,反复使用某些对象等等.....
方法6:Android堆内存也可以自己定义大小和优化Dalvik虚拟机的内存
网上搜的,很明显VMRuntime引用不到。
private final static int CWJ_HEAP_SIZE= 6*1024*1024; private final static float TARGET_HEAP_UTILIZATION = 0.75f; VMRuntime.getRuntime().setMinimumHeapSize(CWJ_HEAP_SIZE); VMRuntime.getRuntime().setTargetHeapUtilization(TARGET_HEAP_UTILIZATION);
0 0
- android 内存溢出 Java.lang.OutOfMemoryError
- Android 图片内存溢出java.lang.OutOfMemoryError:
- android内存溢出 java.lang.OutOfMemoryError
- Java 内存溢出(java.lang.OutOfMemoryError)
- java.lang.OutOfMemoryError: PermGen space 内存溢出
- 内存溢出问题(java.lang.OutOfMemoryError)
- tomcat报内存溢出 java.lang.OutOfMemoryError
- java.lang.OutOfMemoryError内存溢出问题解决方法
- 内存溢出--java.lang.OutOfMemoryError: PermGen space
- BitmapFactory.decodeStream 内存溢出java.lang.OutOfMemoryError
- 内存溢出java.lang.OutOfMemoryError解决方法
- 解决内存溢出问题:java.lang.OutOfMemoryError
- 内存溢出(java.lang.OutOfMemoryError )解决方法!
- java内存溢出(ava.lang.OutOfMemoryError)解决方法
- 内存溢出:java.lang.OutOfMemoryError: PermGen space
- 内存溢出 java.lang.OutOfMemoryError: PermGen space
- java.lang.OutOfMemoryError: PermGen space 内存溢出
- java.lang.OutOfMemoryError: allocLargeArray内存溢出
- leetcode题解日练--2016.7.3
- 【树莓派之旅】第01期:一根网线搞定树莓派可视化界面
- Python 语言及其应用 Chapter_4_Note_5 全局变量和局部变量
- 求一个已排序旋转数组中的最小的数
- Java+Mac+Selenium入门
- android内存溢出 java.lang.OutOfMemoryError
- 在Linux上部署Java访问MongoDB
- 贩妖记 > 第七十九章,人质
- 2.Oracle数据类型
- 【Java进阶二】理解继承
- Android插件化浅析
- LeetCode 第 67 题 (Add Binary)
- R-CNN随笔No.3
- 3.Oracle SQL函数