很 多时候我们需要考虑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一起使用。

更多相关文章

  1. 关于android中使用new Message的内存泄露问题
  2. Android预定义样式?android:attr/attribute、?attr/attribute和?
  3. Android大图片导致内存问题小结
  4. Android(安卓)Property System
  5. 【Android】内存泄漏调试
  6. Android(安卓)4.4 meminfo 实现分析
  7. [Android] 内存泄漏调试经验分享 (一)
  8. Unity 与Android的交互(Android(安卓)studio)
  9. Android中解决图像解码导致的OOM问题

随机推荐

  1. Android学习笔记:androidmanifest.xml 高
  2. android 中的 Bitmap 相关
  3. Android剪切板(ClipboardManager)复制文
  4. 面向忙碌开发者的 Android(安卓)知识点收
  5. Smalidea+IntelliJ IDEA/Android(安卓)St
  6. Android的listview、gridview 笔记
  7. Android(安卓)混淆提示 java.io.FileNotF
  8. Android(安卓)market 发布个人免费应用的
  9. Android深入浅出系列课程---Lesson0 SHW1
  10. Mac下配置android环境变量