KVM中的MVM 和 SVM

KVM中的MVM 和 SVM



MVM:在phoneMEFeature中是Master-modeVirtual Machine,“主模式虚拟机”。也可理解为Multi-taskingVirtual Machine,即多任务虚拟机。

SVM:Slave-modeVirtual Machine,从模式虚拟机。

传统的Java虚拟机运行在单任务模式下,每一个运行的Java应用程序都需要启动一个操作系统进程来运行一个Java虚拟机实例。在这样的情况下,由于每个Java虚拟机实例在创建和初始化的过程中都会重复占用某些资源,在运行时又有大量的运行时数据无法共享,造成了系统资源的浪费。多个应用程序之间的切换也是进程级的,导致程序切换速度较慢。而Java多任务虚拟机的思想就是用来解决多个应用程序同时运行的时候的资源与性能问题。

MVM的设计思想是用isolate的概念来封装单个的应用程序,而所有的isolate都运行在同一个Java虚拟机进程当中,由虚拟机来为它们分配资源和调度执行。由于在MVM的架构下可以大量地共享内存,减少因为重复加载class文件所需的I/O操作,并且多个应用程序的运行是在同一个操作系统进程内的,所以切换操作的开销非常低。这样的设计能大大提高整个系统的启动速度、数据吞吐量和减少资源占用。

 

MVM与SVM在很多方面的处理是不同的,如:

1.      在SVM模式下,MIDletSuiteLoader处理所有MIDletsuites;而MVM模式下,MIDletSuiteLoader只处理第一个MIDletsuite,该MIDlet suite被MIDPAMS和其他内部MIDlets使用。

2.      在SVM模式下,getCurrentIsolateId()直接返回0;而MVM模式返回当前isolateID。

3.      在SVM模式下,getMaxIsolates()直接返回1;而MVM模式返回允许的最大isolate个数。

4.      在MVM模式下,有很多资源是可以在各个isolates间通过cache共享的,但只有AMSisolate 才能写该cache。


你可能感兴趣的:(KVM中的MVM 和 SVM)