`

Android内存管理-SoftReference的使用

阅读更多

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对象来临时保留一些数据,同时对于需要反复通过网络获取的不经常改变的内容,可以通过本地的文件系统或数据库来存储缓存。

分享到:
评论

相关推荐

    Android内存管理

    **1.5 Android内存管理-SoftReference的使用** SoftReference是Java语言中的一种弱引用类型,它比普通的强引用更弱一些,但比WeakReference强一些。在Android中,SoftReference通常用于处理图像缓存等问题,可以...

    Android_memory-leak-debugging.pdf.zip_Android memory le_android_

    - 垃圾收集(GC):Android通过垃圾收集器自动回收不再使用的对象,但这并不意味着开发者可以忽略内存管理。 2. **内存泄漏类型** - 静态变量:静态变量生命周期与应用相同,如果引用的对象不再使用,但静态变量...

    android应用内存监控工具

    理解Android内存机制,掌握内存监控工具的使用,结合实际项目不断优化代码,是每个Android开发者必备的技能。定期进行内存分析,对应用进行压力测试,及时发现和修复问题,可以有效提升应用的质量和用户体验。

    内存优化-android

    本文将深入探讨Android内存管理机制以及如何进行有效的内存优化。 首先,我们需要理解Android的内存模型。Android系统采用Dalvik/ART虚拟机运行应用,每个应用都有自己的内存空间,称为 Dalvik/ART 堆。堆的大小由...

    80-NJ221-1-REV-B-Android-Memory-Leak-Debug-User-Guide

    4.4 使用Android的生命周期感知组件,如LiveData和ViewModel,这些组件设计时考虑了内存管理,可以降低内存泄漏的风险。 ### 5. 国际和美国出口管制信息 文档中提到,该技术数据可能受到美国和国际出口法律的约束...

    Android 内存溢出问题

    本篇文章将深入探讨Android内存管理的两个核心概念:堆(Heap)和栈(Stack),以及如何理解和解决Android内存溢出问题。 1. 堆与栈 堆和栈是Java虚拟机(JVM)中的两种主要内存区域,它们各自具有特定的用途和...

    Android防止内存溢出浅析.zip

    1. **Android内存管理机制** - **Dalvik/ART虚拟机**:Android系统使用Dalvik或ART虚拟机执行应用程序,它们都有自己的内存管理策略。 - **堆内存**:Java对象主要存储在堆中,Android为每个应用分配了一定量的堆...

    使用Android Studio检测内存泄露(LeakCanary)

    理解Android的内存管理机制和熟练使用这些工具,是提高应用性能和稳定性的重要一环。定期进行性能测试和内存分析,可以帮助开发者发现并修复潜在的问题,提升用户体验。记住,良好的编程习惯和对内存管理的深入理解...

    Android-HeapSnap是一款针对Android进程堆内存泄露追踪工具

    Android开发中的内存管理是至关重要的,因为有效管理内存可以避免应用程序无谓的资源消耗,提高应用性能,并降低崩溃的可能性。...结合Android内存管理的基本原理和最佳实践,开发者可以更好地应对复杂的内存管理挑战。

    android-practice-tips, 收集Android开发中各种最佳实践的文章.zip

    3. **内存管理**: 了解内存分析工具,如MAT或Android Studio的内存分析器,可以帮助开发者找到内存泄漏和内存溢出问题。文章可能会讲述如何使用WeakReference和SoftReference,以及如何避免静态变量导致的内存泄漏...

    Android处理内存泄漏的代码例子

    在Android开发中,内存泄漏是一个严重的问题,它会导致应用程序占用过多内存,影响性能甚至导致应用崩溃。本示例代码着重展示了如何避免Android应用中的内存...记住,良好的内存管理是提升应用性能和稳定性的重要因素。

    Android 图片下载以及内存处理防止OOM内存溢出 源码

    在Android开发中,图片的加载和内存管理是一个关键问题,特别是考虑到防止因内存溢出(Out Of Memory,简称OOM)而导致应用崩溃。本教程将详细探讨如何在Android中有效地进行图片下载和内存处理,以避免OOM的发生。 ...

    Android--memory.rar_android_mobile android

    总结,防止Android应用出现内存溢出,需要开发者深入理解Android内存管理机制,遵循最佳实践,使用合适的工具进行监控和分析,并不断优化代码。只有这样,才能确保应用的稳定性和性能,提供良好的用户体验。

    android 优化内存方案

    这份名为"Google技术大会:如何将你的Android使用界面更快和更高效益"的PDF文档,很可能是对Android内存优化的一份详尽指南。以下是根据标题和描述推测的一些关键知识点: 1. **内存管理基础**: - Android系统的...

    android 如何优化最低内存

    14. **使用Android Oreo中的内存管理特性**: Android 8.0引入了Background Execution Limits,限制后台应用的活动,确保前台应用获得足够的资源。适应这些限制可以改善内存管理。 15. **定期检查和更新**: 定期...

    Android防止内存溢出浅析

    首先,我们需要理解Android内存管理的基本原理。Android应用程序基于Java语言,因此其内存机制与Java相似。Java的垃圾回收(GC)机制会自动回收不再使用的对象,但并不意味着开发者可以完全忽视内存管理。Android系统...

    Android的内存机制和溢出说明

    理解并掌握Android的内存管理机制,及时释放不再使用的资源,以及正确处理上下文和位图,对于开发高效、稳定的应用至关重要。开发者应时刻警惕内存泄露,通过有效的内存优化策略,确保应用在有限的内存环境下也能...

    android内存分析工具

    "Android内存分析工具",尤其是Eclipse的MAT(Memory Analyzer Tool)插件,正是解决这类问题的重要利器。 MAT是IBM提供的一款强大的Java内存分析工具,它不仅适用于Android开发,也适用于任何基于Java的平台。MAT...

    安卓Android源码——防止内存溢出浅析.zip

    在安卓(Android)开发中,内存管理是至关重要的一个环节,因为不当的内存使用可能导致应用程序崩溃或者性能下降,其中最常见的问题就是内存溢出(Out of Memory,简称OOM)。本资料包"安卓Android源码——防止内存...

Global site tag (gtag.js) - Google Analytics