美文网首页
内存方面优化分析(一)

内存方面优化分析(一)

作者: 天使飞吧 | 来源:发表于2019-06-24 10:33 被阅读0次

什么是引用,四种引用是什么

在Java中的引用类型,是指除了基本的变量类型之外的所有类型,所有的类型在内存中都会分配一定的存储空间,基本的变量类型只有一块存储空间(分配在stack中), 而引用类型有两块存储空间(一块在stack中,一块在heap中), 形参和传进来的参数在(heap)中;

(1)StrongReference(强引用)

强引用就是平时经常使用的,如常规new Object()。如果一个对象具有强引用,那垃圾回收器绝不会回收。内存不足,甚至出现OOM时,也不会随意回收强引用的对象。

 (2)SoftReference(软引用)

在内存空间足够,垃圾回收器不会回收它;如果内存空间不足,垃圾回收器就会回收软引用的对象。

 (3)WeakReference(弱引用)

弱引用相对软引用,具有更短暂的生命周期。常规的GC,只要被扫描到,都会直接被回收。

 (4)PhantomReference(虚引用)

虚引用在任何时候都可能被垃圾回收器回收,主要用来跟踪对象被垃圾回收器回收的活动。

如何优化listview中加载大量大图片

图片加载开源框架 VolleyImageLoader 、Universal-Image-Loader 

图片缓存原理:

 UI:请求数据,使用唯一的Key值索引Memory Cache中的Bitmap。

 内存缓存:缓存搜索,如果能找到Key值对应的Bitmap,则返回数据。否则执行第三步。

 硬盘存储:使用唯一Key值对应的文件名,检索SDCard上的文件。

 如果有对应文件,使用BitmapFactory.decode*方法,解码Bitmap并返回数据,同时将数据写入缓存。如果没有对应文件,执行第五步。

 下载图片:启动异步线程,从数据源下载数据(Web)。

 若下载成功,将数据同步缓存

android系统的启动过程 – 应用执行过程

android系统的启动过程:

1、启动加载内核

2、执行init进程、初始化设备、启动系统中的重要外部程序Zygote进程(Android 所有进程的孵化器进程)

3、Zygote进程启动后首先是初始化Dalvik虚拟机

4、启动system_server进入Zygote模式,通过Socket等候命令

app启动原理:调用startActivity(Intent), 会通过Binder IPC机制, 最终调用到ActivityManagerService,这个Service会执行如下操作:

1、收集这个intent对象的指向信息

2、验证用户是否有足够的权限去调用该intent对象指向的Activity

3、如果有权限, ActivityManagerService会在新的task中启动目标activity

相关文章

网友评论

      本文标题:内存方面优化分析(一)

      本文链接:https://www.haomeiwen.com/subject/tbhnqctx.html