zoukankan      html  css  js  c++  java
  • 安卓学习49

    今天学习了安卓的一些知识其中主要的是:

    Android 内存管理-SoftReference 的使用

    很多时候我们需要考虑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 这样的客户端

    一些改进建议。

  • 相关阅读:
    UVALive 8519 Arrangement for Contests 2017西安区域赛H 贪心+线段树优化
    UVALive 8513 lovers 2017 西安区域赛 B 贪心+multiset
    JAVA导出EXCEL——POI(转)
    Oracle导入导出——windows命令行形式
    miniUI ExcelExport导出JAVA实现
    JSONObject遍历获取键值
    wrong number of arguments
    JAVA批量修改文件名
    miniUI DataGrid编辑后事件代码示例
    oracle10g没有行列转换函数的替代方法(转)
  • 原文地址:https://www.cnblogs.com/092e/p/14916691.html
Copyright © 2011-2022 走看看