Glide和Picassio的比较
2016-04-14 20:30
363 查看
http://blog.csdn.net/fancylovejava/article/details/44747759
对象池:
Glide原理的核心是为bitmap维护一个对象池。对象池的主要目的是通过减少大对象的分配以重用来提高性能(至于对象池的概览,可以查看 这个Android performance pattern 视频)。
Dalvik和ART虚拟机都没有使用compacting garbage collector,compacting garbage collector是一种模式,这种模式中GC会遍历堆,同时把活跃对象移到相邻内存区域,让更大的内存块可以用在后续的分配中。因为安卓没有这种模式,就可能会出现被分配的对象分散在各处,对象之间只有很小的内存可用。如果应用试图分配一个大于邻近的闲置内存块空间的对象,就会导致OutOfMemoryError,然后崩溃,即使总的空余内存空间大于对象的大小。
使用对象池还可以帮助提高滚动的性能,因为重用bitmap意味着更少的对象被创建与回收。垃圾回收会导致“停止一切(Stop The World)”事件,这个事件指的是回收器执行期间,所有线程(包括UI线程)都会暂停。这个时候,图像帧无法被渲染同时UI可能会停滞,这在滚动期间尤其明显。
对象池:
Glide原理的核心是为bitmap维护一个对象池。对象池的主要目的是通过减少大对象的分配以重用来提高性能(至于对象池的概览,可以查看 这个Android performance pattern 视频)。
Dalvik和ART虚拟机都没有使用compacting garbage collector,compacting garbage collector是一种模式,这种模式中GC会遍历堆,同时把活跃对象移到相邻内存区域,让更大的内存块可以用在后续的分配中。因为安卓没有这种模式,就可能会出现被分配的对象分散在各处,对象之间只有很小的内存可用。如果应用试图分配一个大于邻近的闲置内存块空间的对象,就会导致OutOfMemoryError,然后崩溃,即使总的空余内存空间大于对象的大小。
使用对象池还可以帮助提高滚动的性能,因为重用bitmap意味着更少的对象被创建与回收。垃圾回收会导致“停止一切(Stop The World)”事件,这个事件指的是回收器执行期间,所有线程(包括UI线程)都会暂停。这个时候,图像帧无法被渲染同时UI可能会停滞,这在滚动期间尤其明显。
相关文章推荐
- Web防止请求过于频繁的一种方法
- 4pardim+360
- POJ题目分类
- extern声明全局变量的一些用法
- 解决打印机报错:操作无法完成(错误0x00000709)。
- GUI
- IO流
- React Native教程 - 调用Web API
- poj 2288(状态压缩dp + TSP问题)
- c++ 通用类型
- Android开发中Button按钮绑定监听器的方式完全解析
- 整数中1出现的次数(从1到n整数中1出现的次数)
- 3.19补
- Web动画API教程2:AnimationPlayer和Timeline
- 惜
- flume之集群监控 Ganglia 部署配置
- BZOJ 3997 TJOI2015 组合数学
- Activity的4种启动模式
- JavaWeb学习总结(三)——Tomcat服务器学习和使用(二)
- Java 中的内部类