开发出高效稳定的Android应用我们不得不需要了解下Java虚拟机的原理和内存分配机制,Android使用的是Google经过优化的Dalvik Java VM。通常情况下Java编译过的代码是一些class文件,通过Java VM的类解析器分析、效验后执行。Java语言和C/C++有着本质区别的就是内存管理上,Java VM有一个垃圾收集清理器GC可以自动的回收内存。 Java虚拟机在执行代码的时候,首先解析Class,查找该类的方法、常量,这些对于常规情况下都编译成二进制的代码保存在jar文件中,而对于Java的反射,VM的类加载器需要动态的查找这些类名,虽然节省了编译时间,但是运行时的查找大大降低运行效率。 对于Android应用来说,手机的RAM相对于PC还小了很多,同时电脑上的主流应用使用的是Visual C++编写,所以对于手机上已经不占优势的硬件来讲使用Java这样的内存大户语言必须严格的了解内存释放有助于提高程序的性能。对于Android的内存释放情况,大家可以在DDMS中的Logcat中看到类似 08:10:18.895: DEBUG/dalvikvm(1281): GC freed 38611 objects / 2097960 bytes in 182ms 这样的语句。可以大概了解你的应用的对象回收情况,如图 Android应用通常情况的运行的RAM占用在20MB左右,对于程序美工我们尽量用代码绘制方式实现,而不是贴图。下面我们一起看下有关内存的使用跟踪: 首先我们在Eclipse的DDMS中找到Devices设备管理,选择需要查看的进程,单击上方的Update head那个绿色的按钮,然后切换到Heap页面,单击Cause GC按钮即可,如图 如果你在左边找不到你应用的进程,可以先在手机上运行你的软件之后即可,同时上面的Update Heap按钮不要忘记,上图中标记为红色的一个都不能少。
详细解决方案
Android开发之Java虚拟机原理跟内存分配
热度:31 发布时间:2016-05-01 16:49:55.0
开发出高效稳定的Android应用我们不得不需要了解下Java虚拟机的原理和内存分配机制,Android使用的是Google经过优化的Dalvik Java VM。通常情况下Java编译过的代码是一些class文件,通过Java VM的类解析器分析、效验后执行。Java语言和C/C++有着本质区别的就是内存管理上,Java VM有一个垃圾收集清理器GC可以自动的回收内存。 Java虚拟机在执行代码的时候,首先解析Class,查找该类的方法、常量,这些对于常规情况下都编译成二进制的代码保存在jar文件中,而对于Java的反射,VM的类加载器需要动态的查找这些类名,虽然节省了编译时间,但是运行时的查找大大降低运行效率。 对于Android应用来说,手机的RAM相对于PC还小了很多,同时电脑上的主流应用使用的是Visual C++编写,所以对于手机上已经不占优势的硬件来讲使用Java这样的内存大户语言必须严格的了解内存释放有助于提高程序的性能。对于Android的内存释放情况,大家可以在DDMS中的Logcat中看到类似 08:10:18.895: DEBUG/dalvikvm(1281): GC freed 38611 objects / 2097960 bytes in 182ms 这样的语句。可以大概了解你的应用的对象回收情况,如图 Android应用通常情况的运行的RAM占用在20MB左右,对于程序美工我们尽量用代码绘制方式实现,而不是贴图。下面我们一起看下有关内存的使用跟踪: 首先我们在Eclipse的DDMS中找到Devices设备管理,选择需要查看的进程,单击上方的Update head那个绿色的按钮,然后切换到Heap页面,单击Cause GC按钮即可,如图 如果你在左边找不到你应用的进程,可以先在手机上运行你的软件之后即可,同时上面的Update Heap按钮不要忘记,上图中标记为红色的一个都不能少。
相关解决方案
- java 乱码 汉字是 ? 如何转换成汉字
- java web 登录次数限制,该如何解决
- java 工商银行网银支付 B2B的 都亟需什么,需要注意什么
- Java Applet程序从JDK6升级到7时遇到的有关问题
- java web 视频相干
- java 系统单点登录解决方案
- java 获取客户端IP解决办法
- JAVA 后台怎么获得前台页面FCKedit编辑器中的内容以及内容的样式
- java 正则化匹配有关问题
- JAVA WEB导航条,该怎么处理
- java 中Node 有关问题
- 吐了,java Timer 终止不了。
- java web开发解决办法
- 关于 java cast 有关问题,你明白不
- java ftp 下传和上载乱码有关问题
- java web项目上的一些文件
- Hibernate操作数据库 报错java.lang.Integer cannot be cast to java.lang.String如何改
- java struts 文件上载
- java web baidu map开发
- JAVA WEB导航条解决办法
- java 编写ftp上载
- java web中的一个有关问题,困扰小弟我很久了
- java web 与tomcat解决办法
- java web基于j2ee的一些有关问题
- java 内网外网的一个需求,该怎么处理
- jsp 页面 安插ArrayList 报错。为什么,已经加了import="java.util."了呀!
- java dwg 怎样用java把dwg便是aoutcad的格式文件转换成gif,jpg等格式
- 求《Java Web 程序设计与项目实践》解决办法
- java webservice解决方法
- java 与jsp,该怎么解决