前几天我写了一篇通过压缩Bitmap,减少OOM的文章,那篇文章的目的是按照imageview的大小来压缩bitmap,让bitmap的大小正好是imageview。但是那种算法的通用性比较差,仅仅能适合fit_xy的情况。对此我进一步分析了下这个问题,并且参考了Volley的源码,最终得出了结.....
分类:
编程语言 时间:
2015-01-31 14:32:34
阅读次数:
355
在Android开发中,图片处理是一个难点。对于大量的图片处理,一不小心就会出现OOM的错误。那么,构建缓存,就是非常必要的一个手段。利用软引用构建缓存,只是其中步骤之一,我们来看看一般情况下,图篇处理的流程。
一般而言,图片的处理流程大致如上,之前所说的Xutils的原理,也如此。今天,我们就先讲讲如何利用软引用技术来构建高速缓存。
一、对象的四种引用
在JDK 1.2以前的版...
分类:
移动开发 时间:
2015-01-30 22:51:39
阅读次数:
284
总结:实际上2.6的代码和3.0的代码已经是今非昔比了,所有的代码都应该按照最新的版本进行解读,当然如果我们的操作环境是旧版本,我们也只好研读了。两个函数调用了shrink_cachetry_to_free_pagesshrink_zone文件:mm/page_alloc.c_alloc_pages函数调用out_of_memory(gfp_mask)..
分类:
其他好文 时间:
2015-01-28 19:57:32
阅读次数:
444
Bitmap是引起OOM的罪魁祸首之一,当我们从网络上下载图片的时候无法知道网络图片的准确大小,所以为了节约内存,一般会在服务器上缓存一个缩略图,提升下载速度。除此之外,我们还可以在本地显示图片前将图片进行压缩,使其完全符合imageview的大小,这样就不会浪费内存了。一、思路思路:计算出要显示b...
分类:
其他好文 时间:
2015-01-27 23:10:32
阅读次数:
203
NOTE:看来Android文档过来做个笔记,并没有详细去写这些东西。BitmapFactory提供的decode方法直接去decode的话,会造成oom异常。要设置BitmapFactory.Options 的inJustDecodeBounds为true。将图片信息decode出来,此时并没有真...
分类:
其他好文 时间:
2015-01-27 20:16:19
阅读次数:
200
之前学习volley框架,用ImageLoader可以设置内存缓存,用一个LruCache,就可以避免OOM且图片读取速度快,爽极了。
后来想,如果只是内存缓存的话,那退出程序或者内存不够大了,缓存的图片不就被清理掉了,这样每次启动程序就又得去网上下载图片,流量好贵的。
于是找到了磁盘缓存框架DiskLruCache,这是一个挺著名的开源框架,网易云阅读等APP之前都用它来缓存图片,关...
分类:
其他好文 时间:
2015-01-26 22:49:11
阅读次数:
263
概述Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。对于从事C、C++程序开发的开发人员来说,在内存管理领域,他们即是拥有最高权力的皇帝又是执行最基础工作的劳动人民——拥有每一个对象的“所有权”,又担负着每一个对象生命开始到终结的维护责任。对...
分类:
编程语言 时间:
2015-01-26 13:23:30
阅读次数:
279
非常神奇的卡hash的构造题~
以后可以用来hack别人的hash了~...
分类:
其他好文 时间:
2015-01-25 12:33:43
阅读次数:
170
Hive压缩之二 小文件合并
调研背景
当Hive输入由很多个小文件组成,由于每个小文件都会启动一个map任务,如果文件过小,以至于map任务启动和初始化的时间大于逻辑处理的时间,会造成资源浪费,甚至OOM。为此,当我们启动一个任务,发现输入数据量小但任务数量多时,需要注意在Map前端进行输入合并。当然,在我们向一个表写数据时,也需要注意输出文件大小。
输入合并
合并输入小文...
分类:
其他好文 时间:
2015-01-24 13:11:58
阅读次数:
163
Bitmap调用recycle? When?Bitmap有一个recycle方法,意思非常easy,回收Bitmap的空间。Q 1: Bitmap是否有调用recycle方法的必要性?A: 嵌入式系统总是格外注重空间的问题,不小心的话就会有OOM。可是应用层使用java的android平台有其天然的...
分类:
其他好文 时间:
2015-01-24 12:56:23
阅读次数:
203