`
程言方
  • 浏览: 47529 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

图片占用内存的算法和自定义应用堆内存

 
阅读更多
图片占用内存的算法:
android中处理图片的基础类是Bitmap,顾名思义,就是位图。占用内存的算法如下:
图片的width*height*Config。
如果Config设置为ARGB_8888,那么上面的Config就是4。一张480*320的图片占用的内存就是480*320*4 byte。
前面有人说了一下8M的概念,其实是在默认情况下android进程的内存占用量为16M,因为Bitmap他除了java中持有数据外,底层C++的 skia图形库还会持有一个SKBitmap对象,因此一般图片占用内存推荐大小应该不超过8M。这个可以调整,编译源代码时可以设置参数。


自定义应用堆内存:
  对于一些大型Android项目或游戏来说在算法处理上没有问题外,影响性能瓶颈的主要是Android自己内存管理机制问题,目前手机厂商对RAM都比较吝啬,对于软件的流畅性来说RAM对性能的影响十分敏感,除了上次Android开发网提到的优化Dalvik虚拟机的堆内存分配外,我们还可以强制定义自己软件的对内存大小,我们使用Dalvik提供的 dalvik.system.VMRuntime类来设置最小堆内存为例:

private final static int CWJ_HEAP_SIZE = 6* 1024* 1024 ;

VMRuntime.getRuntime().setMinimumHeapSize(CWJ_HEAP_SIZE); //设置最小heap内存为6MB大小。当然对于内存吃紧来说还可以通过手动干涉GC去处理,我们将在下次提到具体应用。

优化Dalvik虚拟机的堆内存分配

对于Android平台来说,其托管层使用的Dalvik JavaVM从目前的表现来看还有很多地方可以优化处理,比如我们在开发一些大型游戏或耗资源的应用中可能考虑手动干涉GC处理,使用 dalvik.system.VMRuntime类提供的setTargetHeapUtilization方法可以增强程序堆内存的处理效率。当然具体原理我们可以参考开源工程,这里我们仅说下使用方法:   private final static floatTARGET_HEAP_UTILIZATION = 0.75f; 在程序onCreate时就可以调用 VMRuntime.getRuntime().setTargetHeapUtilization(TARGET_HEAP_UTILIZATION); 即可。


分享到:
评论

相关推荐

    占用内存最小的视频播放器

    "占用内存最小的视频播放器"这一主题关注的是那些在保证播放性能的同时,尽可能减少系统资源消耗的应用程序。这类播放器适合于配置较低或者内存资源紧张的设备,也可以提升在多任务环境下使用时的流畅度。 首先,...

    自定义对称加密解密算法

    6. **兼容性和标准化**:虽然自定义算法可能有其独特优势,但在实际应用中,与其他系统和标准的兼容性也很重要。有时,选择已广泛接受的加密标准会更利于系统的互操作性。 在开发自定义对称加密算法时,通常会经历...

    加载图片到内存

    使用内存分析工具如Android Studio的Memory Profiler,定期检查应用内存使用情况,及时发现并修复内存泄漏问题。 8. **磁盘缓存** 当内存不足时,可将图片存储在外部存储的缓存目录中,下次加载时直接从磁盘读取...

    A星算法节省内存方式的代码QT5运行

    6. **内存优化**:在实现A*时,通过有效管理数据结构(如使用字典或二叉堆来存储节点),避免冗余信息,以及智能地更新和删除节点,可以减少内存占用。例如,使用邻接列表而非邻接矩阵可以节省内存,因为邻接矩阵在...

    Android图片缓存算法的代码例子

    在Android应用开发中,图片加载和缓存是一个关键性能...以上就是关于"Android图片缓存算法的代码例子"的主要知识点,通过这些技术,我们可以有效地处理Android应用中的图片加载和缓存问题,提升应用的性能和用户体验。

    Android高级应用源码-图片下载以及内存处理防OOM.zip

    在Android开发中,图片的处理是一项非常重要的任务,因为不当的图片加载和内存管理往往会导致应用程序性能下降,甚至出现“Out of Memory”(OOM)错误。这个“Android高级应用源码-图片下载以及内存处理防OOM.zip”...

    能够使用内存查看,查看图片的KEmulator

    综上所述,KEmulator手机模拟器结合内存查看和图片查看功能,为开发者提供了一个全面的测试和调试环境,帮助他们确保Android应用在运行时的稳定性和性能。通过深入理解内存管理,开发者能够更好地优化其应用,提高...

    图片下载以及内存处理防OOM.zip项目安卓应用源码下载

    这些库都具有智能缓存机制,能有效地管理内存和磁盘缓存,防止因大量图片加载导致的内存消耗。项目可能使用了其中一种或自定义的图片加载策略。 2. **内存管理**:Android系统为每个应用分配一定的内存限制。当应用...

    自定义照片墙

    总的来说,创建自定义照片墙涉及到了Android UI组件的深度定制,包括自定义ViewPager和ImageView,以及手势识别和图片加载优化。这个过程需要对Android的触摸事件处理、动画系统以及内存管理有深入的理解。通过合理...

    数据结构算法与应用

    通过上述知识点的详细介绍,我们可以看到,《数据结构算法与应用》这本书不仅提供了理论知识,还辅以丰富的实践案例,旨在帮助读者构建坚实的数据结构和算法基础,同时掌握C++编程语言的高级特性,为解决复杂问题...

    安卓图片多选相关-自定义相册实现多选照片解决oom.zip

    在Android开发中,图片选取和管理是一个常见的需求,特别是在实现多选照片时,开发者经常会遇到内存溢出(Out Of Memory, OOM)的问题。这个压缩包"安卓图片多选相关-自定义相册实现多选照片解决oom.zip"提供了一个...

    大图片所引起的内存问题

    硬引用映射表`hardManager`用于快速访问最近使用的图片,限制其容量为10,以防止过度占用内存。这种方法结合了引用管理和图片处理,有效解决了因大图片导致的内存溢出问题。 总之,Android开发者在处理大图片时,...

    Android应用源码之图片下载以及内存处理防OOM.zip

    4. 使用内存和磁盘缓存:图片库如Glide和Fresco都提供了内存和磁盘缓存机制,能有效避免重复加载和快速响应用户操作。 5. 加载策略:延迟加载(Lazy Loading)、按需加载(On-Demand Loading)和分块加载(Chunky ...

    android网络加载图片对图片资源进行优化并且实现内存双缓存磁盘缓存.pdf

    Android 网络加载图片优化与内存双缓存磁盘缓存实现 在 Android 应用程序中,加载图片是非常常见的操作...通过使用图片资源优化、异步加载图片和缓存机制,我们可以减少应用程序占用内存的大小,提高应用程序的性能。

    自定义图片三级缓存工具类

    - 另外,可以结合图片压缩技术,降低内存和磁盘占用,提高加载效率。 总结,自定义图片三级缓存工具类通过内存、磁盘和网络的有机结合,实现了高效、流畅的图片加载。理解和掌握这种缓存机制对于提升应用性能至关...

    深入探索Android内存优化1

    2. 内存优化维度:主要包括运行时内存优化和应用占用空间的优化。前者防止内存过度使用,后者关注于减小应用的安装包大小。 二、常见工具选择 1. Memory Profiler:Android Studio自带的内存分析工具,可以实时...

    viewpager+photoview自带圆点支持放大缩小,仿微信朋友圈图片查看器,自定义dialog

    在处理大量图片时,需要注意内存管理,防止Bitmap对象占用过多内存。可能采用的方式包括使用低分辨率的缩略图、及时释放不再使用的Bitmap对象、利用软引用等。 9. **性能优化**: 为了保证流畅的用户体验,开发者...

    Android内存缓存图片的标准方法

    在Android开发中,高效地加载和管理图片资源是至关重要的,因为这直接影响到应用的性能和用户体验。"Android内存缓存图片的标准方法"主要涉及到如何使用`LruCache`来优化图片加载,防止因频繁的内存分配和回收导致的...

    易语言防止文件内存溢出源码

    4. **及时释放资源**:在完成对文件数据的操作后,确保立即释放不再需要的内存和资源,避免内存泄漏。 5. **异常处理**:设置适当的错误处理机制,当检测到可能出现内存溢出的情况时,可以及时释放已分配的内存,并...

    电子科学计算器软件 占用内存极小

    8. **编程与脚本支持**:一些高级的科学计算器软件还支持自定义脚本或编程,让用户可以编写自己的计算规则和算法。 9. **历史记录与保存**:保存用户的计算历史,方便复查和复制以前的计算结果。 10. **多语言支持...

Global site tag (gtag.js) - Google Analytics