从第三篇文章开始,写文章顺序都是按着下面这两张图来写的,过程都是按着从上到下的顺序写。
总之,咱们的java的指令都是根据栈来设计的,目的就是为了JVM的跨平台性。因为咱们都知道的是,基于寄存器的话,耦合就吧比较高,导致移植性不好。缺点和优点:跨平台性好,指令集比较小(因为是0地址指令集),指令多,执行性能比寄存器较差。 (1)Idea怎么实现反编译
第一步可以先执行你想要反编译的文件,看我的例子
第二步就来看我们的out目录【进去找到你刚才执行的一个文件】
第三步点这里
最后执行一条指令javap -v 你的文件
(2)一个问题
这里的嵌入式系统的话:另外一层含义就是资源受限的,原因主要是
就是它的优点还是在的,优点比较多,移植性好等。它在资源不受限的情况也是可以用的,没有必要硬是给他更换了。 2、JVM的生命周期
假设你在web服务器部署了三个web服务器,就可以用三个虚拟机执行。
具体的方法可以去看一下我们的源代码
记得看一下这运行时数据区域和我们的Runtime类
不管怎么样,前面五个你要记住的
(1)Sun classic VM记得它是世界最早的一个商用虚拟机它只提供了解释器【也就是没有提供JIT编译器,现在主流的都实现了解释器和编译器的,解释器是边解释边执行的,会使启动速度比较快;而JIT编译器则是先翻译再执行,执行效率比较高】
想我们不是把全部的代码都用JIT呢?因为他等的时间比较多。
(2)Exact VM
它的优点最重要的是:虚拟机可以知道内存中某个位置的数据具体是什么类型。这样的优点你可以这样理解,因为我们虚拟机进行垃圾回收的时候,需要去查找我们的数据是应用类型还是基本类型,它这样可以减少开销。还有它进行热点探测:它只是有了个大概的模型,具体应用是在Hotspot里面来引用了。 (3)HotSpot VM
它是兼容了解释器和JIT编译器,因此它的应用非常广泛,但下面要讲的JRockit Vm则是实现了JIT编译的,它适合于服务器,它这样就效率比较高。 (4)JRockit VM
它是最快的啊,世界上,不要相信IBM的J9
他们两个公司都被Oracle收购后,因此有想把JRockit和Hotspot的优点整合到一起的想法,所有在JDK8吧,就整合到一部分优点在一起了,但是他们两个的架构开始就不一,导致整合很困难,所以整合在一起的内容是有限的。
(5)IBM J9
它现在也是属于IBM公司的,IBM是没有被收购的哦。它比较适合它自己的产品上,但是在其他系统上面使用的话,bug是比较多的。 (6)K VM和CDC/CLDC HotSpot
(7)Azul VM和Liquid VM
apk文件,可以去补习一下。
还有其他的,另外虚拟机都是有不同的好处的,不同的应用场景会有不同的性能。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)