jVM基于栈则意味着需要去栈中读写数据,所需的指令会更多,这样会导致速度慢,对于性能有限的移动设备,显然不是很适合。
DVM是基于寄存器的,它没有基于栈的虚拟机在拷贝数据而使用的大量的出入栈指令,同时指令更紧凑更简洁。但是由于显示指定了操作数,所以基于寄存器的指令会比基于栈的指令要大,但是由于指令数量的减少,总的代码数不会增加多少。
看到这些话中就是不理解jvm 堆栈虚拟机为啥有隐含的操作数?
jVM基于栈则意味着需要去栈中读写数据,所需的指令会更多,这样会导致速度慢,对于性能有限的移动设备,显然不是很适合。
DVM是基于寄存器的,它没有基于栈的虚拟机在拷贝数据而使用的大量的出入栈指令,同时指令更紧凑更简洁。但是由于显示指定了操作数,所以基于寄存器的指令会比基于栈的指令要大,但是由于指令数量的减少,总的代码数不会增加多少。
看到这些话中就是不理解jvm 堆栈虚拟机为啥有隐含的操作数?
15 回答8.1k 阅读
8 回答6.3k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
1 回答2.1k 阅读✓ 已解决
书看完了没? 看完了就不会提这个问题,没看完接着看,出来吓唬人就不对了
什么时候jvm是基于栈的? 你从哪看得? 只有《JVM虚拟机规范》,里面没有提到任何有关栈的术语,Hotspot是Oracle根据jvm规范实现的一种jvm,然后它里面刚好有栈,堆,新生代,以及各种垃圾回收器等等术语,《jvm虚拟机规范》并没有这些东东