在开发手机应用的时候,内存是有限的,那使用的时候,就要合理的运用和释放。那么最占用内存的,估计也是就图片了,有时候,需要在加载一些大量的图片。但是,往往回报内存溢出的错误。看看图片的大小呢,也不大,也就20KB左右,为什么还是很占内存呢?
原来,将图片转成bitmap 来使用的时候,图片所占的内存,不是它原来的大小,是与图片的宽度,高度和颜色深度有关系。
图片实际占用的内存大小 = width * height * 颜色深度
颜色深度:
Bitmap.Config ALPHA_8
Bitmap.Config ARGB_4444
Bitmap.Config ARGB_8888
Bitmap.Config RGB_565
A R G B
透明度 红色 绿色 蓝色
其实这都是色彩的存储方法:我们知道ARGB指的是一种色彩模式,里面A代表Alpha,R表示red,G表示green,B表示blue,其实所有的可
见色都是右红绿蓝组成的,所以红绿蓝又称为三原色,每个原色都存储着所表示颜色的信息值
Bitmap.Config ARGB_4444 每个像素 占四位
Bitmap.Config ARGB_8888 32 每个像素 占八位
Bitmap.Config RGB_565 16 R占5位 R占6位 B占5位 没有透明度(A)
说白了就ALPHA_8就是Alpha由8位组成
ARGB_4444就是由4个4位组成即16位,
ARGB_8888就是由4个8位组成即32位,
RGB_565就是R为5位,G为6位,B为5位共16位
由此可见:
ALPHA_8 代表8位Alpha位图
ARGB_4444 代表16位ARGB位图
ARGB_8888 代表32位ARGB位图
eg: 一张 20KB的图片,宽 1024px 高1024 px . * 图片的颜色模式,就是它所占的真实的内存 .
分享到:
相关推荐
在加载大图片时,使用 recycle() 方法可以释放图片占用的内存空间,从而避免内存溢出。例如: ```java if (!bmp.isRecycled()) { bmp.recycle(); system.gc(); // 手动触发垃圾回收 } ``` 三、使用 Java 中的内存...
本文将全面分析Android图片占用内存的情况,解答关于图片内存占用的疑惑。 首先,我们要理解Android系统中Bitmap对象的工作原理。Bitmap是Android用于存储图像数据的核心类,它代表了图像像素数据。当我们在应用中...
综上所述,解决Android图片下载导致的内存溢出问题需要从多个方面进行优化,包括图片尺寸控制、缓存策略、内存管理、加载策略等。结合使用现有的图片加载库,可以显著提高应用性能和用户体验。在实际项目中,...
在Android平台上,显示大型GIF图像可能会导致内存溢出(Memory Overflow)问题,因为GIF是一种动画格式,它包含多帧连续的图像,如果直接加载到内存中,会占用大量资源。为了解决这个问题,我们可以采用一些技术策略...
5. **资源回收**:当图片不再使用时,要及时释放相关资源,包括Bitmap对象和其占用的内存。在ImageView的onDetachedFromWindow()方法中,可以释放Bitmap,确保它不会占用内存。 6. **合理使用内存缓存和磁盘缓存**...
4. 系统服务和库:Android系统服务和各种库占用的内存。 5. Stack:线程栈,存储函数调用时的局部变量。 二、内存监控的重要性 1. 避免内存泄漏:长期占用但不再使用的内存会导致内存泄漏,消耗设备资源,甚至导致...
在Android开发中,内存管理是至关重要的,尤其是处理图片资源时,经常遇到内存溢出(Out Of Memory,简称OOM)的问题。本项目提供了一个在Android 1.6 SDK环境下编写的工具类,旨在帮助开发者有效地避免内存溢出,...
图片占用内存的计算公式为:内存 = 图片分辨率 * 图片的色彩模式。这里的分辨率指的是图片的宽度和高度像素,色彩模式则决定了每个像素点占用的字节数。Android支持的色彩模式主要有以下四种: 1. `ALPHA_8`:8位...
在Unity引擎中,开发者可以利用跨平台特性与Android原生代码进行交互,以获取更详细的系统性能信息。本文将深入探讨如何在Unity中调用Android API来查看内存使用情况、系统内存状态以及FPS(帧率)信息,这些数据...
1. **减小图片大小**:使用更小的图片尺寸或压缩格式,如PNG8、WebP等,可以有效减少内存占用。对于背景透明的图片,选择PNG8格式可以大大减少文件大小,因为PNG8只支持256色且不支持 alpha 通道,相比于PNG32格式,...
栈中的数据遵循先进后出(FILO)原则,当一个方法调用结束,对应的栈帧会被移除,其所占内存随之释放。 2. 垃圾回收(GC)与内存溢出 在Java和Android中,垃圾回收机制自动回收不再使用的堆内存,以防止内存泄漏。...
使用inSampleSize可以降低图片的分辨率,减少内存占用。 虚拟内存,也称为堆内存,是Android系统分配给应用的一部分内存。Android系统会根据需要自动管理这部分内存,但开发者可以通过合理的对象管理来辅助优化。...
在Android开发中,图片的加载和内存管理是一个关键问题,特别是考虑到防止因内存溢出(Out Of Memory,简称OOM)而导致应用崩溃。本教程将详细探讨如何在Android中有效地进行图片下载和内存处理,以避免OOM的发生。 ...
综上所述,这个优化版的Android图片瀑布流解决方案综合运用了多种技术手段,以防止内存溢出,提升应用的稳定性和性能。开发者在实现自己的瀑布流布局时,可以参考这些优化策略,为用户提供流畅且高效的图片浏览体验...
在Android开发中,为了优化用户体验,提高应用性能,通常会采用文件缓存和内存缓存技术,特别是处理像ListView这样的滚动列表组件加载网络图片时。本文将深入探讨这两种缓存机制,以及如何解决图片错位问题。 首先...
下面我们将深入探讨Android图片处理的相关知识点。 1. **图片加载框架**: Android原生的Bitmap类提供了基本的图片处理功能,但在实际应用中,由于内存管理的复杂性,往往需要使用专门的图片加载库,如Glide、...
这个“android图片浏览器代码”提供的解决方案是针对大图片加载的问题,这是一个棘手的问题,因为大图片可能会导致内存溢出,影响应用的性能和用户体验。以下是对这个代码库的详细解析: 1. **大图片加载策略**: ...
在Android平台上,优化应用以适应最低内存环境是提高应用程序性能和用户体验的关键步骤。尤其是在资源有限的设备上,如入门级智能手机或平板电脑,确保应用高效运行尤为重要。以下是一些关于如何优化Android应用内存...
5. **图片解码与存储**:图片下载完成后,Glide会在后台线程解码图片,并将其添加到内存和磁盘缓存。 6. **显示图片**:最后,更新UI,显示加载好的图片。 在实际开发中,我们还需要考虑一些细节问题,例如: - *...
标题提到的“Android-低内存消耗的序列帧动画库”正是为了解决这个问题,它只占用一张序列帧图片的内存,从而极大地降低了内存使用。 这个库采用了高效的数据结构和算法设计,实现了内存优化。首先,它将整个序列帧...