`
ko8e
  • 浏览: 50517 次
  • 性别: Icon_minigender_1
  • 来自: 龙岩
社区版块
存档分类
最新评论

Android学习之内存管理机制

阅读更多
很多开发者都是从J2ME或J2EE上过来的,对于内存的使用和理解并不是很到位,Android开发网本次给大家一些架构上的指导,防止出现豆腐渣工程的出现。Android作为以Java语言为主的智能平台对于我们开发一些高性能和质量的软件来说了解Android程序内存管理机制是必须的。 Android的Dalvik VM在基础方面和Sun JVM没有什么大的区别仅仅是字节码的优化,我们要知道什么时候用gc什么时候用recycle以及到底用不用finalization,因为Java对内存的分配只需要new开发者不需要显示的释放内存,但是这样造成的内存泄露问题的几率反而更高。

1.对于常规开发者而言需要了解 Java的四种引用方式,比如强引用,软引用,弱引用以及虚引用。一些复杂些的程序在长期运行很可能出现类似OutOfMemoryError的异常。

2.并不要过多的指望gc,不用的对象可以显示的设置为空,比如obj=null,这里Android123提示大家,java的gc使用的是一个有向图,判断一个对象是否有效看的是其他的对象能到达这个对象的顶点,有向图的相对于链表、二叉树来说开销是可想而知。

3.Android为每个程序分配的对内存可以通过Runtime类的totalMemory() freeMemory() 两个方法获取VM的一些内存信息,对于系统heap内存获取,可以通过Dalvik.VMRuntime类的getMinimumHeapSize() 方法获取最小可用堆内存,同时显示释放软引用可以调用该类的gcSoftReferences() 方法,获取更多的运行内存。

4.对于多线程的处理,如果并发的线程很多,同时有频繁的创建和释放,可以通过concurrent类的线程池解决线程创建的效率瓶颈。

5. 不要在循环中创建过多的本地变量。
有关Android和Java的系统性能分析,Android123将在以后的文章中详细讲述如何调试Java分析内存泄露以及Android上的gdb调试器分析得出内存性能改进。
分享到:
评论

相关推荐

    探讨Android内存管理

    Android 内存管理机制 如何评估 App 的内存占用 一些减少 App 内存占用的建议 内存管理概述 Android 运行时 (ART) 和 Dalvik 虚拟机使用分页和内存映射来管理内存。这意味着应用修改的任何内存,无论修改的方式是...

    某500强android学习资料

    第八章_Android_GWES,第二章_Android基础知识,第九章_Android安全机制,第六章_Android进程间通信,第七章_Android_Camera架构,第十三章_Android内核驱动——电源管理,第十四章_Android内核驱动——内存管理,...

    Android应用程序开发教程PDF电子书完整版、Android开发学习教程

    Dalvik 虚拟机依赖于 linux 内核的一些功能,比如线程机制和底层内存管理机制。 Linux Linux Linux Linux 内核 Android 的核心系统服务依赖于 Linux 2.6 内核,如安全性,内存管理,进程管理, 网络协议栈和驱动模型...

    Android多媒体编程从初学到精通

    读者对象:本书内容翔实、分析深刻,是Android学习多媒体编程不可多得的资料。可以作为IT相关专业本科生和研究生,以及嵌入式领域的初、中级软件工程师的参考读物。 作者简介 苗忠良,资深Android开发工程师和...

    新版Android开发教程.rar

    � 采用了对有限内存、电池和 CPU 优化过的虚拟机 Dalvik , Android 的运行速度比想象的要快很多。 � 运营商(中国移动等)的大力支持,产业链条的热捧。 � 良好的盈利模式( 3/7 开),产业链条的各方:运营商、...

    Android某500强公司内部学习资料(中文高清版).part1

    第一章 Android开发环境 第二章 Android基础知识 第三章 Android虚拟机 第四章 Android进程间通信 第五章 Android_Camera架构 ...第十章 Android内核驱动之内存管理 第十一章 Android内核驱动之杂项

    Android某500强公司内部学习资料(中文高清版).part2

    第一章 Android开发环境 第二章 Android基础知识 第三章 Android虚拟机 第四章 Android进程间通信 第五章 Android_Camera架构 ...第十章 Android内核驱动之内存管理 第十一章 Android内核驱动之杂项

    Android高级编程--源代码

    1.5.8 优化的内存和进程管理 8 1.6 开放手机联盟简介 8 1.7 运行Android的环境 8 1.8 从事Android开发的原因 9 1.8.1 推动Android普及的因素 9 1.8.2 Android的独到之处 10 1.8.3 改变移动开发格局 10 1.9 ...

    Android学习系列教程实例.pdf

    Android 学习文档总结 ................... 1 DevDiv 推荐资源 ........................ 2 Windows 8 ........................................................... 2 iOS .........................................

    开源bbs源码java-ASSRouter:Android系统学习路线

    开源 ...1,ava内存管理模型、内存分配、内存回收的机制 2,内存泄漏分析和解决办法 四、AppApp.svelte 1,apkApp.svelte 五、App电量优化 1, 安装battery historian的两种方式: 使用docker安装,

    安卓Android精品课程在线学习系统app设计毕业源码案例设计.zip

    Java是一种高性能、跨平台的面向...自动内存管理(垃圾回收): Java具有自动内存管理机制,通过垃圾回收器自动回收不再使用的对象,使得开发者不需要手动管理内存,减轻了程序员的负担,同时也减少了内存泄漏的风险。

    [14本经典Android开发教程]-8-Linux内核阅读心得体会

    读核感悟 内存管理 内核中的页表映射总结 43 读核感悟 健壮的代码 exception table 内核中的刑事档案 44 读核感悟 定时器 巧妙的定时器算法 45 读核感悟 内存管理 page fault处理流程 45 读核感悟 文件读写 select...

    Android开发之XML文件解析的使用

    前言   本文主要介绍在Android中怎样来解析XML文件。主要采用的是SAX机制,SAX全称为Simple API for XML,它...在前面的文章Qt学习之路_12(简易数据管理系统)中使用的是Qt中的DOM方法。  实验说明  大多数SAX实现

    Java版水果管理系统源码-CoinExchange:CoinExchange

    本源码仅供学习参考,请勿用于非法运营 最新PC演示(含永续合约+期权合约) APP下载(含永续合约) 后端演示 添加本人QQ获取。 虽然说是演示的,但其实并不是专门用来给大家演示的,而是给我自己开发用的。所以请...

    JAVA上百实例源码以及开源项目源代码

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

    PowerWord.exe

    词霸的单词本、双语资讯、每日一句等功能,让用户在查词之余可以更全方位地进行英语学习,是查词、学习、阅读的首选词典软件。 2012年  词霸手机版5.0发布, [13] 在移动端成为一款经典、权威、免费的词典软件。 ...

    JAVA上百实例源码以及开源项目

    此时此景,笔者只专注Android、Iphone等移动平台开发,看着这些源码心中有万分感慨,写此文章纪念那时那景! Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这...

Global site tag (gtag.js) - Google Analytics