嵌入式虚拟机实际上就是我们平时在pc机上的可执行程序,无非它可以解释执行类文件定义的一些协议,相当于我们平时的对文件操作,只不过操作比较复杂而已。所以对于虚拟机一个可执行程序而言,无非也是代码区,堆区(通过内存申请)和栈区和全局数据区。所以当移植虚拟机时系统要提供给虚拟机多大的内存(包括上面所说的代码区等等)。至于虚拟机本身怎么分配安排这些内存则是java虚拟机提供者的事情了。而平时我们说的java语言里面的数据(java方法区,java堆,java栈,java寄存器,本地方法栈)怎么组织的那是另外一个概念,这是从java应用的角度上说的,从实质上说都是一些逻辑概念。在我认为,堆和栈完全可以用一全局静态数组,怎么管理这段内存那是虚拟机自己的事情,这样的好处java虚拟机的操作固定在某个内存段中,不会破坏其他模块的数据,当然虚拟机程序写错了就不可预料了:),并且当出现内存不足的情况问题只会出现在本模块中,而不是到其他模块找原因。当然虚拟机移植还包括输入输出设备的驱动提供,这些都由系统本身提供,包括网络,文件系统,键盘,显示,声音等输入输出设备。待续...
阅读(2660) | 评论(0) | 转发(0) |