基于栈的指令集架构,另外一种指令集架构则是基于寄存器的指令集架构。
区别:
基于栈式架构的特点:
跨平台性;
指令集小但是指令多;
设计和实现更简单,适用于资源受限的系统;
避开了寄存器的分配难题;使用零地址指令方式分配;
指令流中的指令大部分是零地址指令,其执行过程依赖于操作栈。指令集更小,编译器容易实现;
不需要硬件支持,可移植性更好,更好实现跨平台。
执行性能比寄存器要差一些。
基于寄存器架构的特点:
典型的应用是x86
同样执行2+3的操作,其指令分别如下:
寄存器架构的指令更少。
JVM的生命周期:
启动:
通过引导类加载器(bootstrap class loader)创建的一个初始类(initial class)来完成的,这个类是由虚拟机的具体实现指定的。
执行:
一个运行中的java虚拟机有着一个清晰的任务:执行java程序。
程序开始执行时运行,结束时停止;
执行的时候实际是执行的java虚拟机的进程。
退出:
有以下几种情况:
正常执行完成后退出;
遇到了异常或者错误而异常终止;
由于操作系统出现错误而导致JVM进程终止;
某线程调用了Runtime类或System类的exit方法,或Runtime类的halt方法,并且java安全管理器也允许这次exit或者halt操作。
(shutdown方法)
除此之外,JNI(java native interface,java原生方法接口)规范描述了用JNI Invocation API来加载或者卸载JVM时,JVM的退出情况。