第一章:JVM简介

第一章:JVM简介


Java虚拟机具有语言无关性,它只关心“字节码”文件。只要其他编程语言的编译结果满足并包含java虚拟机的内部指令集、符号表以及其他的辅助信息,它就是一个有效的字节码文件,就能够被虚拟机所识别并装载运行。

字节码:

虚拟机:

Java虚拟机:

JVM的位置:

JVM的整体结构:(要会画)

方法区和栈是所有线程共享的,而java栈、本地方法栈和程序计数器是每个线程独有的。
字节码指令≠机器指令

Java代码执行流程:

解释执行和编译执行并存。

JVM的架构模型:

JVM的生命周期:

启动:
Java虚拟机的启动是通过引导类加载器(bootstrap class loader)创建一个初始类(initial class)来完成的,这个类是由虚拟机的具体实现指定的。
执行:
一个运行中的java虚拟机有着一个清晰的任务:执行java程序
程序开始执行时它才运行,程序结束时它就停止。
执行一个所谓的java程序时,真正在执行的是一个叫做java虚拟机的进程。
退出:
遇到如下几种情况:
①程序正常执行结束
②程序在执行过程中遇到了异常或者错误而异常终止
③由于操作系统出现错误而导致java虚拟机进程终止
④某线程调用Runtime类或System类的exit方法,或Runtime类的halt方法,并且java安全类管理器也允许这次exit或halt操作。
⑤除此之外,JNI(java native interface)规范描述了用JNI Invocation API来加载或者卸载java虚拟机时,java虚拟机的退出情况。

HotSpot VM:

Taobao VM:

J9 VM:

Dalvik VM:

Graal VM:

posted @ 2020-05-24 21:37  scnb  阅读(62)  评论(0)    收藏  举报