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

Android开发之Java虚拟机原理和内存分配

阅读更多
开发出高效稳定的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按钮不要忘记,上图中标记为红色的一个都不能少。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics