Android异常与性能优化相关面试问题-bitmap面试问题详解
recycle:
对于Bitmap来说内存分为Java内存和Native内存,而当图片不用时建议调用一下recycle()方法来将native层的内存进行回收,下面看一下它的源码官方对它的解释:
LRU:
它是Least Recently Used【最近最少使用】的缩写,通常可以用做Bitmap的存储,会将最近最少使用的对象给清除出去,看一下它的源代码:
其中再提供了一些操作这个数据结构的方法:
而当缓存满的时候,则会调用trimToSize()方法将用得最久用得最少的缓存对象从队列中清除,并添加新的缓存对象,这也是LRU算法的核心,如下:
而对于put和remove方法的具体实现如下:
总结它的原理:它是采用LinkedHashMap来实现的,并给我们提供了添加、获取、删除缓存的方法,其中trimToSize()是会将最近最少使用的缓存将其清除,并将新的缓存添加到队列当中。
计算inSampleSize:
按尺寸进行图片的缩放,其大致代码如下:
缩略图:
它跟inSampleSize是息息相关的,具体对图片缩放的代码如下:
三级缓存:
第一次加载图片从网络上去加载,而此时还会将图片缓存到内存和本地SDCARD各一份,如果下次再次请求相同URL的图片时,则首先从内存去加载,如果内存加载失败则尝试从SDCARD去加载。
Android异常与性能优化相关面试问题-bitmap面试问题详解的更多相关文章
- Android异常与性能优化相关面试问题-OOM异常面试问题详解
什么是OOM? 当前占用的内存加上我们申请的内存资源超过了Dalvik虚拟机的最大内存限制就会抛出Out Of Memory异常. 一些容易混淆的概念: 内存溢出:指的就是OOM. 内存抖动:是短时间 ...
- Android异常与性能优化相关面试问题-内存管理面试问题详解
内存管理机制概述: 分配机制:操作系统会为每一个进程分配一个合理的内存大小,从而保证每一个进程能够正常的运行,不至于内存不够使用,或者某个进程占用过多的内存. 回收机制:在系统内存不足的时候,系统有一 ...
- Android异常与性能优化相关面试问题-ui卡顿面试问题详解
UI卡顿原理: “60fps(Frames Per Second每秒传输帧数) ----> 16ms” 针对上面标红的数字,下面具体说明一下:最主要的根源在于渲染性,Android会每隔16ms ...
- Android异常与性能优化相关面试问题-其他优化面试问题详解
Android不用静态变量存储数据: 静态变量等数据由于进程已经被杀死而被初始化.在Android中应用进程不是安全的,因为它会有系统给kill掉,但是在实际中可能会有这样的一个假象:当app被杀掉之 ...
- Android异常与性能优化相关面试问题-冷启动优化面试问题详解
什么是冷启动: 冷启动的定义:冷启动就是在启动应用前,系统中没有该应用的任何进程信息.实际也就是要执行Application.onCreate()方法的那次启动. 冷启动 / 热启动的区别:热启动:用 ...
- Android异常与性能优化相关面试问题-内存泄漏面试问题讲解
Java内存泄漏基础知识: Java的内存的分配策略 a.静态存储区:也叫方法区,主要是存放一些静态数据及全局变量等,在程序编译时就已经分配好了,并且在静态存储区中存放的变量在整个程序运行期间都存在. ...
- Android异常与性能优化相关面试问题-ANR异常面试问题详解
什么是ANR? Application Not Responding 造成ANR的主要原因: 应用程序的响应性是由ActivityManager和WindowManager系统服务监视的,当监视到在A ...
- 转——Android应用开发性能优化完全分析
[工匠若水 http://blog.csdn.net/yanbober 转载请注明出处.] 1 背景 其实有点不想写这篇文章的,但是又想写,有些矛盾.不想写的原因是随便上网一搜一堆关于性能的建议,感觉 ...
- Android 应用开发性能优化完全分析
1 背景 其实有点不想写这篇文章的,但是又想写,有些矛盾.不想写的原因是随便上网一搜一堆关于性能的建议,感觉大家你一总结.我一总结的都说到了很多优化注意事项,但是看过这些文章后大多数存在一个问题就是只 ...
随机推荐
- TLC编程
NAND Flash可以划分为SLC.MLC和TLC SLC:单阶存储单元,读写速率快,可擦写次数高 MLC和TLC:多阶存储单元,MLC每个存储单元中存储2 bit数据,可以表示四种数据:SLC每个 ...
- DRF视图-5个扩展类以及GenericAPIView基类
视图 5个视图扩展类 视图拓展类的作用: 提供了几种后端视图(对数据资源进行曾删改查)处理流程的实现,如果需要编写的视图属于这五种,则视图可以通过继承相应的扩展类来复用代码,减少自己编写的代码量. 这 ...
- 【JulyEdu-Python基础】第 7 课:Python并发编程以及系统常用模块
主要内容 Python多进程与多线程 Python使用Hadoop分布式计算库mrjob Python使用Spark分布式计算库PySpark 例子:分别使用MapReduce和Spark实现word ...
- 字符串——kmp
目录 一.前言 二.思路 三.代码 一.前言 kmp算法是用于从文本串text的字串中,寻找含有的模板串pattern的数量/位置的算法. 例如,在文本串abcabcccabc中,模板串abc的数量有 ...
- 【VS开发】OpenCV2:Mat属性type,depth,step
OpenCV2:Mat属性type,depth,step 在OpenCV2中Mat类无疑使占据着核心地位的,前段时间初学OpenCV2时对Mat类有了个初步的了解,见OpenCV2:Mat初学.这几天 ...
- 《ThinkPHP 5.0快速入门》 基础和路由
一.基础: 创建项目:conposer create-project topthink/think tp5 --prefer-dist 创建项目模块:php think build --module ...
- python 指定文件夹下所有文件(包括子目录下的文件)拷贝到目标文件夹下
#!/usr/bin/env python3 # -*- coding:utf8 -*- # @TIME :2018/9/17 9:02 # @Author:dazhan # @File :copyf ...
- day38 各种队列、Event事件、协程、猴子补丁
1.各种队列 我们已经学习了队列这种存取值的方法,我们以前使用的队列是可以进行进程间通信的(IPC),但是今天学习的这两种队列是不能进行进程间通信的,只能进行线程间的通信 这两种队列分别是先进后出式队 ...
- poj3122 Pie (二分)
题目链接:https://vjudge.net/problem/POJ-3122 题意:有n块饼,m+1个人,将饼均分成m+1块,求每块最大的大小. 思路:水二分,显然每块的大小与可以给多少人吃具有单 ...
- Centos修改时间
1. 普通用户 a. 获取超级用户root权限 命令:su或者su -或者su - root b. passwd 用户名 2. 超级用户 a. 打开system-auth文件 命令:vi /etc/p ...