Android内存管理-SoftReference的使用来解决内存不至于快速回收
来源:互联网 发布:h5麻将源码 编辑:程序博客网 时间:2024/06/04 17:40
很多时候我们需要考虑Android平台上的内存管理问题,Dalvik VM给每个进程都分配了一定量的可用堆内存,当我们处理一些耗费资源的操作时可能会产生OOM错误(OutOfMemoryError)这样的异常,Android123观察了下国内的类似Market客户端设计,基本上都没有采用很好的内存管理机制和缓存处理。 如果细心的网友可能发现Android Market客户端载入时,每个列表项的图标是异步刷新显示的,但当我们快速的往下滚动到一定数量比如50个,再往回滚动时可能我们看到了部分App的图标又重新开始加载,当然这一过程可能是从SQLite数据库中缓存的,但是在内存中已经通过类似SoftReference的方式管理内存。 在Java中内存管理,引用分为四大类,强引用HardReference、弱引用WeakReference、软引用SoftReference和虚引用PhantomReference。它们的区别也很明显,HardReference对象是即使虚拟机内存吃紧抛出OOM也不会导致这一引用的对象被回收,而WeakReference等更适合于一些数量不多,但体积稍微庞大的对象,在这四个引用中,它是最容易被垃圾回收的,而我们对于显示类似Android Market中每个应用的App Icon时可以考虑使用SoftReference来解决内存不至于快速回收,同时当内存短缺面临Java VM崩溃抛出OOM前时,软引用将会强制回收内存,最后的虚引用一般没有实际意义,仅仅观察GC的活动状态,对于测试比较实用同时必须和ReferenceQueue一起使用。 对于一组数据,我们可以通过HashMap的方式来添加一组SoftReference对象来临时保留一些数据,同时对于需要反复通过网络获取的不经常改变的内容,可以通过本地的文件系统或数据库来存储缓存,希望给国内做App Store这样的客户端一些改进建议。
- Android内存管理-SoftReference的使用来解决内存不至于快速回收
- Android内存管理-SoftReference的使用
- Android内存管理-SoftReference的使用
- Android内存管理-SoftReference的使用
- Android内存管理-SoftReference的使用
- Android内存管理-SoftReference的使用
- Android内存管理-SoftReference的使用
- Android内存管理之SoftReference
- 解决android开发中内存溢出之软引用(SoftReference)
- android回收图片使用内存
- android内存管理,垃圾回收策略的疑惑
- android内存管理,垃圾回收策略的疑惑
- Android系统中的进程管理:内存的回收
- Android中使用SoftReference内存缓存图片对象
- Android中使用SoftReference内存缓存图片对象
- Android 内存管理与gc 回收机制
- Android 虚拟机,内存管理,垃圾回收 相关
- linux内存管理--内存回收
- linux命令ubuntu 重启网络服务而不需重启
- busybox编译错误
- 注册表处理之(监控注册表的通用结构)
- linux设备驱动中常用函数及其出处
- 下载文件载入sd
- Android内存管理-SoftReference的使用来解决内存不至于快速回收
- 【转】总结一下String(Java)
- SharePoint CAML 通过SPUser.ID查询用户资料
- 四个类型的字符串返回值操作性能比较
- 如何删除onekey ghost创建的目录
- 硬件设备的监控处理之一——(串口的禁用和启用)
- 在dll中delphi中封装窗体(实例)
- scala List和Tuple的用法
- java中控制数据输出的格式