`

android 内存建议

 
阅读更多
五、不健壮代码的特征及解决办法

1、尽早释放无用对象的引用。好的办法是使用临时变量的时候,让引用变量在退出活动域后,自动设置为null,暗示垃圾收集器来收集该对象,防止发生内存泄露。

对于仍然有指针指向的实例,jvm就不会回收该资源,因为垃圾回收会将值为null的对象作为垃圾,提高GC回收机制效率;

2、我们的程序里不可避免大量使用字符串处理,避免使用String,应大量使用StringBuffer,每一个String对象都得独立占用内存一块区域;

String str = "aaa";

String str2 = "bbb";

String str3 = str + str2;//假如执行此次之后str ,str2以后再不被调用,那它就会被放在内存中等待Java的gc去回收,程序内过多的出现这样的情况就会报上面的那个错误,建议在使用字符串时能使用StringBuffer就不要用String,这样可以省不少开销;


3、尽量少用静态变量,因为静态变量是全局的,GC不会回收的;

4、避免集中创建对象尤其是大对象,JVM会突然需要大量内存,这时必然会触发GC优化系统内存环境;显示的声明数组空间,而且申请数量还极大。

这是一个案例想定供大家警戒

使用jspsmartUpload作文件上传,运行过程中经常出现java.outofMemoryError的错误,

检查之后发现问题:组件里的代码

m_totalBytes = m_request.getContentLength();

m_binArray = new byte[m_totalBytes];

问题原因是totalBytes这个变量得到的数极大,导致该数组分配了很多内存空间,而且该数组不能及时释放。解决办法只能换一种更合适的办法,至少是不会引发outofMemoryError的方式解决。参考:http://bbs.xml.org.cn/blog/more.asp?name=hongrui&id=3747


5、尽量运用对象池技术以提高系统性能;生命周期长的对象拥有生命周期短的对象时容易引发内存泄漏,例如大集合对象拥有大数据量的业务对象的时候,可以考虑分块进行处理,然后解决一块释放一块的策略。

6、不要在经常调用的方法中创建对象,尤其是忌讳在循环中创建对象。可以适当的使用hashtable,vector 创建一组对象容器,然后从容器中去取那些对象,而不用每次new之后又丢弃

7、一般都是发生在开启大型文件或跟数据库一次拿了太多的数据,造成 Out Of Memory Error 的状况,这时就大概要计算一下数据量的最大值是多少,并且设定所需最小及最大的内存空间值。
分享到:
评论

相关推荐

    胡凯 - Android内存优化之5R法则

    根据胡凯在MDCC 2015中国移动开发者大会上的演讲内容,我们可以了解到他提出的“Android内存优化之5R法则”。 5R法则是对内存优化策略的高度概括,它涉及以下几个方面:Release(释放)、Reclaim(回收)、Reduce...

    android内存泄露测试

    ### Android内存泄露测试详解 在Android开发中,内存管理是一项至关重要的任务,不当的内存管理会导致应用运行缓慢、崩溃甚至耗尽系统资源。内存泄露是内存管理中的一个常见问题,它指的是应用程序分配了内存但未能...

    Android MAT 内存分析 工具

    **五、MAT与Android内存优化** MAT在Android开发中的应用主要是查找和修复内存泄漏,优化对象生命周期管理,减少内存占用,提升应用性能。开发者应定期进行内存分析,特别是在处理大量数据或长时间运行的应用中。 ...

    Android代码-安卓内存清理 改进版

    >现修复android5.0以上不能查看进程的问题,暂时不能支持7.0的查看进程的功能,欢迎各位提出相应的意见或建议,如不能配置好环境,请下载安装包MemoryCleaner >由于对第一版的安卓手机内存用到的技术以及UI不满意,...

    android 如何优化最低内存

    在Android平台上,优化应用以适应最低内存环境是提高应用程序性能和用户体验的关键步骤。...同时,文档“android 最低内存.doc”可能提供了更详细的技术指南和案例,建议仔细阅读以获取更多深入的知识。

    android模拟内存分配

    例如,LeakCanary和MAT(Memory Analyzer Tool)都是常用的内存分析工具,它们可以帮助开发者定位潜在的问题,并提供改进建议。 总结来说,Android系统的内存分配涉及到多种算法和策略,如不同的内存分配算法、分代...

    android 内存 文件读写操作

    5. **文件操作注意事项**:为了保证文件操作的原子性,避免数据丢失,建议使用`FileChannel`的`transferFrom()`和`transferTo()`方法,或者使用`RandomAccessFile`进行大文件的读写。 四、SaveRead文件示例 在给定...

    Android内存管理机制研究_宋平波1

    Android内存管理机制研究 Android内存管理机制是Android操作系统的核心组件之一,负责管理和分配移动设备的内存资源。Android内存管理机制研究是移动应用开发者和研究人员需要深入了解和掌握的知识领域。本文将深入...

    android性能优化之内存泄露

    #### 二、Android内存管理基础知识 在讨论内存泄露之前,我们需要了解一些基本概念。Android应用进程通常被分配一定量的RAM(例如:2MB到由`getMemoryClass()`或`getLargeMemoryClass()`返回的值),当内存不足时,...

    android内存分析工具

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

    Android解决大量帧动画内存泄漏问题

    帧动画太多造成内存泄漏问题,内含所需的JAR包:org.apache.commons.io.IOUtils,将Inputstream转为byte字节数组,减少内存泄漏 和关键代码,仅供参考,如有建议请在下方留言或添加咨询~~~

    Android内存优化——常见内存泄露及优化方案.pdf

    Android内存优化是移动应用开发中一个至关重要的环节,特别是在资源受限的移动设备上。内存泄露是导致应用运行缓慢和最终崩溃的主要原因之一。以下将详细介绍Android开发中常见的内存泄露场景及优化方案。 首先,...

    R16 Android方案内存配置说明.pdf

    文档还针对512MB和1GB内存方案提出了不同的配置建议。 **Android配置**: 文档提供了一系列Android系统的配置,例如不同内存方案下的zramdisksize、dalvikheap参数设置等。这些配置对于优化Android系统在特定硬件...

    android4.4修改上报系统显示ddr容量大小

    在Android系统中,内存管理是至关重要的一个环节,特别是对于硬件资源有限的设备,如平板电脑。在Android 4.4(KitKat)系统中,内存的报告...对于新的Android版本,建议进行充分的测试和验证,以确保兼容性和可靠性。

    android内存管理

    总结来说,Android内存管理涉及对Java对象生命周期的理解,特别是对Bitmap的处理,以及如何避免内存泄漏。开发者应该养成良好的编程习惯,适时释放不再使用的资源,并利用Android提供的工具(如Memory Profiler)...

    探讨Android内存管理

    一些减少 App 内存占用的建议 内存管理概述 Android 运行时 (ART) 和 Dalvik 虚拟机使用分页和内存映射来管理内存。这意味着应用修改的任何内存,无论修改的方式是分配新对象还是轻触内存映射的页面,都会一直驻留在...

    Android内存优化杂谈

    Android内存优化是提升应用性能的关键环节,主要分为两个方面:优化RAM(运行时内存)和优化ROM(程序存储空间)。本文主要关注降低运行时内存,防止应用程序出现OOM异常,减少因内存过大导致的程序被系统LMK(Low ...

    android悬浮窗显示内存

    在Android系统中,开发者可以创建悬浮窗来展示各种实时信息,如内存使用状态。这个功能在监测设备性能、优化应用运行或提供用户便利时非常有用。"android悬浮窗显示内存"是一个实现这样的功能的例子,它允许用户查看...

    Android项目实战--手机卫士27--拿到剩余内存以及正在运行的进程数

    同时,可以结合业务需求,对这些数据进行分析,比如判断当前内存是否紧张,或者筛选出消耗内存较大的进程,提供清理建议。 4. 实时更新: 如果需要实时显示内存和进程数的变化,可以设置定时任务或者监听内存变化...

    [教程] 【转】Android 通过软引用实现图片缓存,防止内存溢出 [复制链接]

    一、Android内存管理基础 在Android中,内存管理主要依赖于Dalvik或ART虚拟机,它们遵循Java的垃圾回收机制。当对象不再被引用时,垃圾回收器会自动清理这些内存。然而,强引用(Strong Reference)始终保持着对对象...

Global site tag (gtag.js) - Google Analytics