`
微Smile
  • 浏览: 33088 次
  • 性别: Icon_minigender_2
  • 来自: 湖南
社区版块
存档分类
最新评论

bitmap性能优化

 
阅读更多

Bitmap优化:转化小图,预加载和内存回收

 

一般用于ListView、Gallery.ViewPager等中

 

转化为小图:

可以把原始图像存储在硬盘,剪切出一份小图像存在内存,加载小图。(此处有种匹配算法,详情见官网)

 

预加载:

在getview中预加载未显示的项目。

 

内存回收:

例如listview中建议在getview外面转化bitmap然后直接加载bitmap,而不是在getview中转化再加载,会照成照片显示卡。

但是, 在外面加载需要把需要显示的全部放入内存,则有可能造成内存泄漏。此时可以采用内存回收。例如把当前显示在屏幕上的左右三个之外的全部回收,则所需占用的内存只有一定的大小。

 

 

注意点:

 

优化不能在主线程中完成,需要开辟子线程完成优化。

 

在Android中:
       1.一个进程的内存可以由2个部分组成:native和dalvik,,dalvik就是我们平常说的java堆,我们创建的对象是在这里面分配的,而bitmap是直接在native上分配的,对于内存的限制是 native+dalvik 不能超过最大限制。
       2.更加奇怪的是这个:一旦内存分配给Java后,以后这块内存即使释放后,也只能给Java的使用,这个估计跟java虚拟机里把内存分成好几块进行缓存的原因有关,反正C就别想用到这块的内存了,所以如果Java突然占用了一个大块内存,即使很快释放了:
        C能使用的内存 = 16M - Java某一瞬间占用的最大内存。
       而Bitmap的生成是通过malloc进行内存分配的,占用的是C的内存,这个也就说明了,上述的4MBitmap无法生成的原因,因为在13M被Java用过后,剩下C能用的只有3M了。

      3 一般图片都是压缩过的,一个100k的图片转化为bitmap,可能变为很大。

分享到:
评论

相关推荐

    Android性能优化之Bitmap图片优化详解

    在Android开发过程中,Bitmap往往会给开发者带来一些困扰,因为对Bitmap操作不慎,就容易造成OOM(Java.lang.OutofMemoryError – 内存溢出),本篇博客,我们将一起探讨Bitmap的性能优化。 为什么Bitmap会导致OOM? 1...

    bitmap内存测试实践

    测试图片占用的内存大小,测试空bitmap和一张真实图片的内存大小对比,测试bitmap内存释放,测试bitmap优化后占内存大小等,理清bitmap到底怎么一回事,主要的类是BitmapDemo.java,csdn博客讲解:...

    Android性能优化(七)Bitmap内存压缩示例源码BitMapCache.zip

    Android性能优化(七)Bitmap内存压缩示例源码

    bitmap_indexes bitmap索引的相关知识整理

    而其中索引的使用又是经常碰到的一个调整优化的难题, 经常听到很多itpub上的同仁讨论使用bitmap index但是又不敢轻易使用它(害怕出现性能问题)。这里参考了Oracle文档,《Beginning Oracle Programming》及《Oracle...

    Android Bitmap的加载优化与Cache相关介绍

    主要介绍了Android中性能优化之Bitmap的加载优化与Cache相关内容介绍,文中介绍的很详细,对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。

    basalt:高性能的分布式的专门空间优化的Bitmap服务,高效检查数据是否存在,日活统计,签到,打点等等

    基于Raft的数据一致性分布式的bitmap服务 bitmap (位图)技术是数据库,大数据和互联网业务等场景下经常使用的一种技术。 存在性判断 爬虫url去重 垃圾邮件过滤 用户已阅读 用户已赞 ... 去重 数据库 大数据计算 ...

    微软内部资料-SQL性能优化2

    Contents Module Overview 1 Lesson 1: Memory 3 Lesson 2: I/O 73 Lesson 3: CPU 111 Module 3: Troubleshooting Server Performance ...Troubleshooting server performance-based support calls requires ...

    Android开发性能优化总结

    一. 加载 预加载:1.反射注解框架Reflect信息,在Application内多线程预加载至缓存。...2. 并发操作多用读写锁,少用synchronized,Android虚拟机Art直到Android6.0为止尚未对synchronized做CAS优化,而sy

    微软内部资料-SQL性能优化5

    The IAM is a giant bitmap, and every 1 bit indicates that the corresponding extent belongs to the table. The IAM allows SQL Server to do efficient prefetching of the table’s extents, but every row ...

    Listview的异步加载性能优化

    关于listview的异步加载,网上其实很多示例了,中心思想都差不多,不过很多版本或是有bug,或是有性能问题有待优化,下面就让在下阐述其原理以探索个中奥秘在APP应用中,listview的异步加载图片方式能够带来很好的...

    BAT 大厂Android研发岗必刷真题:Android异常与性能优化相关面试问题

    今天来讲一讲在面试中碰到的Android异常与性能优化相关问题: 1、anr异常面试问题讲解 a) 什么是anr? 应用程序无响应对话框 b) 造成anr的原因? **主线程中做了耗时操作 c) android中那些操作是在主线程呢? ...

    Android图片性能优化详解

    目前移动端Android平台原生支持的图片格式主要有:JPEG、PNG、GIF、BMP、和WebP(自从Android 4.0开始支持),但是在Android应用开发中能够使用的编解码格式只有三种:JPEG、PNG、WebP,图片格式可以通过查看Bitmap类...

    Android性能优化(六)图片压缩

    /frameworks/base/core/jni/android/graphics/Bitmap.cpp Skia引擎 https://skia.org/index_zh Google 研发、开源的C++二维图形库  Android:  阉割的skia版本,对jpeg的处理基于libjpeg,对png则是基于libpng。 ...

    2023 OLAP峰会(公开)PPT汇总(25份).zip

    Impala中的性能优化 MaxCompute湖仓一体方案新能力 2、混合存储论坛 从 TP 到 AP, OceanBase OLAP 核心技术详解 多云缓存在知乎的演进_datafun 混合存储架构中的数据编排 MatrixOne: HTAP 数据库中的 OLAP 设 3、...

    IOS 性能优化中离屏渲染

    GPU屏幕渲染有以下两种方式: On-Screen Rendering 意为当前屏幕渲染,指的是GPU的渲染操作是在当前用于显示的屏幕缓冲区中进行。 Off-Screen Rendering 意为离屏渲染,指的是GPU在当前屏幕...完成,渲染得到的bitmap

    Android内存优化杂谈

    Android内存优化是我们性能优化工作中比较重要的一环,这里其实主要包括两方面的工作: 1、优化RAM,即降低运行时内存。这里的目的是防止程序发生OOM异常,以及降低程序由于内存过大被LMK机制杀死的概率。另一方面,...

    Android开发艺术探索.任玉刚(带详细书签).pdf

    第三,介绍一些核心技术和Android的性能优化思想。 第1章 Activity的生命周期和启动模式 1 1.1 Activity的生命周期全面分析 1 1.1.1 典型情况下的生命周期分析 2 1.1.2 异常情况下的生命周期分析 8 1.2 ...

    最全java面试题.zip

    Android性能优化 ListView详解 RecyclerView和ListView的异同 AsyncTask源码分析 插件化技术 自定义控件 事件分发机制 ANR问题 Art和Dalvik的区别 Android关于OOM的解决方案 Fragment Activity&Fragment SurfaceView...

    Java最全面试题宝典.rar

    Android性能优化 ListView详解 RecyclerView和ListView的异同 AsyncTask源码分析 插件化技术 自定义控件 事件分发机制 ANR问题 Art和Dalvik的区别 Android关于OOM的解决方案 Fragment Activity&Fragment SurfaceView...

Global site tag (gtag.js) - Google Analytics