论文部分内容阅读
Java虚拟机本身是一个与平台相关的应用程序,而Java程序被编译成符合Java虚拟机规范的二进制代码,由Java虚拟机来解释执行这些二进制代码,或者对这些二进制代码进行优化并翻译成本地代码之后执行。由于Java虚拟机广泛运行于各种嵌入式设备,这些设备往往对运行环境的要求比较苛刻,它们本身大多只具有有限的存储资源,处理器的处理能力比较差,而且还会受到功耗的限制。因此现代的虚拟机都采用了即时编译与自适应编译等本地代码翻译技术来提升Java虚拟机的执行效率和减小资源占用。传统的Java虚拟机都是单任务模式,即为每一个运行的Java应用程序都需要启动一个操作系统进程来运行一个Java虚拟机实例。在这样的情况下,由于每个Java虚拟机实例在创建和初始化的过程中都会重复占用某些资源,在运行时又有大量的运行时数据无法共享,造成了系统资源的浪费。多个应用程序之间的切换也是进程级的,导致程序切换速度较慢。而Java多任务虚拟机,即Multi-tasking Virtual Machine的思想就是用来解决多个应用程序同时运行的时候的资源与性能问题。MVM的设计思想是用Isolate的概念来封装单个的应用程序,而所有的Isolate都运行在同一个Java虚拟机进程当中,由虚拟机来为它们分配资源和调度执行。由于在MVM的架构下可以大量地共享内存,减少因为重复加载class文件所需的I/O操作,并且多个应用程序的运行是在同一个操作系统进程内的,所以切换操作的开销非常低。这样的设计能大大提高整个系统的启动速度、数据吞吐量和减少资源占用。本文对传统的Java虚拟机结构进行分析,在此基础上来详细分析MVM的架构和具体实现。最后在具体的MVM平台上实现一个SVM与MVM兼容的标准手机信息接口WMA来验证MVM架构在性能与可扩展性和易用性等方面的优势。