kvm文档翻译-第七章
说明翻译KVM的文档,只是为了个人学习以做记录.如果有翻译不周到的地方,请指出,我会修正的.为何翻译该文档此KVM不是目前特别火的Kernel-based Virtual Machine(一个开源的系统虚拟化模块).而是一个JAVA 的虚拟机.是J2ME cldc 的一个实现.其源码的难度比hotspot简单多了.因此,想通过研读KVM,以加深对hotspot的理解虚拟机启动在不同的KV...
说明
翻译KVM的文档,只是为了个人学习以做记录.如果有翻译不周到的地方,请指出,我会修正的.
为何翻译该文档
此KVM不是目前特别火的Kernel-based Virtual Machine(一个开源的系统虚拟化模块).而是一个JAVA 的虚拟机.是J2ME cldc 的一个实现.其源码的难度比hotspot简单多了.因此,想通过研读KVM,以加深对hotspot的理解
虚拟机启动
在不同的KVM平台中,虚拟机启动可能会有很大的不同。默认情况下,KVM支持基于命令行的Java虚拟机启动,但是对于不需要基于命令行启动的环境,可以很容易地修改虚拟机。
命令行启动
本小节描述从命令行启动KVM时虚拟机的启动约定。
文件vmultra/src/main.c提供了main()的默认实现。从命令行调用虚拟机,如下所示:
kvm [option]* className [arg]*
其中option 可以为:
-version
-classpath <list of directories>
-heapsize <heap size parameter>
必需的classname参数指定要调用其方法static main(string argv[])的类。类名称之外的所有参数都是未解释的字符串,这些字符串构成单个字符串[]对象,并作为单个参数传递给主方法。
-classpath选项允许用户定义kvm从中读取类文件的目录。参数是一个字符串,其中目录由路径分隔符分隔。路径分隔符的值在Windows平台上通常为“;”,在Unix平台上为“:”。
-heapsize选项(在KVM 1.0.3中引入)允许用户手动设置KVM在虚拟机启动时分配的Java堆大小。堆大小可以从16千字节到64兆字节。堆大小可以用字节(如32768)、千字节(如32K或32K)或兆字节(如1M或1M)指定。注意,当堆大小以字节为单位定义时,kvm会自动将堆大小数字舍入到下一个可以被4整除的数字。
此外,如果虚拟机是在启用INCLUDEDEBUGCODE模式的情况下编译的,那么表6(第六章)中给出的跟踪选项是可用的
当使用Java级调试接口时,可以使用附加命令行选项来控制调试器。详见第16章。
main(int argc,char**argv)的默认实现使用argv调用函数startjvm(),其中所有选项都已删除,argc已适当递减。
可选的虚拟机启动策略
如果实现没有从命令行启动虚拟机(例如,如果使用图形环境启动应用程序),则必须安排代码使用适当的参数调用startjvm()
使用JAM (Java Application Manager)
许多KVM端口运行在资源受限的设备上,这些设备缺少桌面操作系统中常见的许多功能,例如命令行、图形文件管理器,甚至文件系统。为了方便KVM移植到这样的平台上,KVM提供了一个被称为JAM(Java应用程序管理器)的设施的示例实现。
在编译级别,可以使用标志打开或关闭JAM
#define USE_JAM 1
当使用gnumake构建kvm时,以下命令会在启用JAM的情况下自动构建系统:
gnumake USE_JAM=true
如果JAM编译到KVM中,则必须使用-jam命令行标志激活它。
JAM实现假定可以使用HTTP协议以JAR文件的形式下载应用程序。JAM通过HTTP读取JAR文件和相关描述符文件的内容,并以主类作为参数启动KVM。
由于JAM是主机操作系统和虚拟机之间的接口,所以它可以被用来作为特定于设备的图形Java应用程序管理和启动环境(“微浏览器”)的起点,或者作为虚拟机测试的测试线束。JAM引用实现提供了一种特殊的“重复”模式,它允许jam来运行大量Java应用程序(例如,测试用例),而不必每次重新启动虚拟机。
请参阅第15章“Java应用程序管理器(JAM)”,以了解关于jam的进一步信息。
更多推荐
所有评论(0)