`
luckliu521
  • 浏览: 259031 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Android开发中如何避免内存溢出

阅读更多
如果您在开发中遇到如上所示的错误,那么请您看完本文!

  首先我们要明确一点,在android开发中,堆的大小!=机器内存大小(Heap size != External Memory size)

  android虚拟机自身已经限制了一个进程的内存在0——4MB之间,如果超过4M,那么您就会得到象 BitmapFactory.DecodeFile Error 这样的错误,这就可以解释为什么我们看到内存还剩下2M,但虚拟机却不给我们分配700K的空间。所以通过增大系统内存的方法是行不通的,我们只能通过减少内存的使用,这也是我所知道的唯一的方法,并且已经获得成功。

  解决方案:

  如果您使用一个Gallery来展示很多大图片,那么你需要一个 ImageAdapter来得到图片信息,因此,就很把很多的ImageView 放到一个List中。现在,当你在设置 ImageView时(哪怕你并不使用它),系统内存都会超过4M,就算你调用回收内存的方法也不管用。唯一的解决方法就是不用使用太多的图片控件,建议在5——10个之间即可。

  我们怎么做呢?

  这个一个很棘手的问题,你需要在您的ImageAdapter中写一个算法,让它能够释放当前不显示图片的内存,我们可以这样调用:

  myImageView.setImageBitmap(null);

  如果你有胆量的话,在你不需要显示原始图片时,您可以通过资源文件加载图片,但是要注意,如果错误的使用资源文件也会把4M的内存耗尽。方法如下所示:

  myImageView.setImageResource(R.drawable.loadingImage);
分享到:
评论

相关推荐

    android 轻松避免内存溢出

    在Android开发中,内存管理是至关重要的,尤其是处理图片资源时,经常遇到内存溢出(Out Of Memory,简称OOM)的问题。本项目提供了一个在Android 1.6 SDK环境下编写的工具类,旨在帮助开发者有效地避免内存溢出,...

    Android 内存溢出问题

    在Android开发中,内存管理是优化应用程序性能的关键因素之一。内存溢出问题,尤其是在处理大量数据或资源时,可能导致应用程序崩溃或性能下降。本篇文章将深入探讨Android内存管理的两个核心概念:堆(Heap)和栈...

    针对Android应用中Gallery内存溢出的解决方案.pdf

    ### 针对Android应用中Gallery内存溢出的解决方案 #### 引言 随着移动互联网的飞速发展,Android作为全球最受欢迎的智能手机平台之一,以其开放性和灵活性吸引了大量的开发者和用户。然而,随着应用程序功能的日益...

    Android有效解决加载大图片时内存溢出的问题

    在 Android 开发中,加载大图片时经常会出现内存溢出的问题。这是由于大图片的解码需要大量的内存空间,从而导致应用程序崩溃。因此,解决加载大图片时的内存溢出问题是非常重要的。 一、使用 BitmapFactory....

    android解决加载图片内存溢出

    在Android开发中,图片加载是常见且关键的操作,但如果不恰当处理,很容易导致内存溢出(Out of Memory,简称OOM)问题。内存溢出不仅会影响应用的性能,降低用户体验,严重时甚至会导致应用崩溃。本篇文章将深入...

    Android防止内存溢出浅析.zip

    在Android应用开发中,内存溢出(Out Of Memory,简称OOM)是一个常见的问题,它会导致应用崩溃,严重影响用户体验。理解并防止Android应用中的内存溢出是优化应用性能的关键环节。以下是对Android防止内存溢出的...

    android 图片下载 有效解决内存溢出问题

    在Android开发中,图片下载和显示是常见的操作,但如果不恰当处理,很容易引发内存溢出(Out of Memory,简称OOM)问题。内存溢出是指程序在申请内存时,没有足够的内存空间供其使用,导致程序崩溃。对于Android应用...

    android_内存溢出处理

    Android 内存溢出处理是 Android 开发中常见的问题之一。在 Android 中,内存溢出通常是由于Bitmap 的大小超过了 VM 的-budget 导致的。解决这个问题需要从多方面入手,包括优化 Dalvik 虚拟机的堆内存分配、手动...

    Android的内存机制和溢出说明

    内存溢出(OutOfMemoryError)是Android开发中常见的问题,特别是在处理大尺寸的位图(Bitmap)时。由于Android设备的内存有限,长时间持有资源的引用会导致内存无法被回收,从而引发内存泄露。内存泄露不仅浪费资源...

    Android防止内存溢出浅析

    在Android开发中,防止内存溢出是一个至关重要的任务,因为Android设备的内存资源相对有限,尤其是在Dalvik虚拟机中,其最大堆大小通常只有16MB。本文将深入探讨Android平台上的内存管理机制,以及如何避免内存泄露...

    android内存的溢出和泄漏问题

    在Android开发中,内存管理是至关重要的,尤其是对于内存有限的移动设备而言。本文主要讨论的是Android中的两个关键问题:内存溢出和内存泄漏。 内存溢出(Memory Overflow)发生在程序试图分配超过系统可提供的...

    android双缓冲解决图片内存溢出的问题

    在Android开发中,处理大量的图片资源时,常常会遇到内存溢出(Out Of Memory,简称OOM)的问题。这是因为Android系统为每个应用分配的内存有限,当加载过多或过大的图片时,很容易超出这个限制,导致应用崩溃。为了...

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

    通过理解Android内存管理机制,掌握上述防止内存溢出的策略,并结合实际项目中的源码分析,开发者可以有效地优化应用内存使用,提升应用的稳定性和性能。定期进行内存压力测试和代码审查,也能及时发现并修复潜在的...

    处理bitmap内存溢出问题

    在Android开发中,处理`Bitmap`内存溢出问题是一个常见的挑战,尤其是在处理高分辨率或大尺寸图片时。当应用程序尝试加载或操作一张超出虚拟机内存预算的`Bitmap`时,系统会抛出`java.lang.OutOfMemoryError: bitmap...

    android异步加载网络图片,双缓存内存加sd卡缓存 绝对不会出现内存溢出oom

    在Android开发中,异步加载网络图片是一项常见且重要的任务,尤其在处理大量图片的列表或者应用时。本文将深入探讨如何实现一个高效、安全的网络图片加载机制,结合双缓存策略,确保图片加载过程既快速又不会导致...

    基于Android防止内存溢出浅析

    在Android开发中,内存管理是至关重要的一个环节,因为不当的内存使用可能导致应用程序崩溃或性能下降,最常见的问题就是内存溢出(Out Of Memory,简称OOM)。本文将深入浅析如何在Android环境中预防和处理内存溢出...

    图片过大引起的内存溢出解决方案

    在Android开发过程中,我们经常会遇到因加载大尺寸图片而引发的`OutOfMemoryError`(内存溢出错误)。这种问题通常发生在使用`BitmapFactory`来加载图片时,尤其是在资源有限的设备上更为明显。本文将详细介绍如何...

Global site tag (gtag.js) - Google Analytics