JVM与Java体系结构
大部分Java开发技术人员,除了用框架写应用程序,调用API之外,对JVM的了解甚少。
JVM的重要性
JVM 是中高级程序员的必备技能,此外在项目管理,性能调优的时候,也用的到。另外,倘若我们对垃圾回收算法,JIT编译器,底层原理感兴趣,追求极客精神的话,就可以去学习虚拟机。
JVM简介
字节码文件:java前端编译器生成的字节码文件是cafebabe开头的,这几个字母被称为魔数。是表示字节码文件是java字节码的标识。
有了JVM,并不是只有java程序可以解释运行,其他的程序语言只要能符合JVM规范那么就可以在虚拟机上运行。
JAVA发展的重大事件(了解)
其中重要的是,现在默认的虚拟机是HotSpot虚拟机,G1垃圾回收器。
ZGC是速度最快的但是正在调试器件,Z是二十六个字母中的最后一个,可能内涵是想ZGC成为最后一代垃圾回收器吧。
虚拟机与Java虚拟机
虚拟机分为系统虚拟机和程序虚拟机。
Visual Box VMware就属于系统虚拟机,它们完全是对物理计算器的仿真。
程序虚拟机典型代表就是Java虚拟机,在Java虚拟机中执行的指令我们称之为Java字节码指令。
Java虚拟机
是一台执行Java字节码的虚拟机,运行的java字节码也未必由java语言编译而成
java技术的核心就是Java虚拟机,因为所有的Java程序都运行在Java虚拟机内部。
作用:java虚拟机就是二进制字节码的运行环境。
特点:一次编译,到处运行。
自动内存管理。
自动垃圾回收功能。
JVM虚拟机是作用在操作系统之上,与硬件没有直接的联系。
JVM的整体内存结构 重要
JVM的生命周期
虚拟机的启动
启动是根据引导类加载器创建一个初始类来完成的,这个类由虚拟机的具体实现指定的。
虚拟机的运行
一个运行中的Java虚拟机有这样一个清晰的任务:执行Java程序
程序开始执行是他才运行,程序结束时他就停止
执行一个所谓的Java程序的时候,真正执行的是一个java虚拟机的进程。
虚拟机的退出
程序正常执行结束
程序在执行过程中遇到了异常货错误而异常终止
由于操作系统出现错误导致java虚拟机进程终止
几款虚拟机
Classic VM 第一款虚拟机(已经淘汰)
Exact VM (被HotSpot虚拟机替代)
HotSpot VM虚拟机
JRocket 是世界上最快的虚拟机 被Oracle收购 Bea公司
IBM公司的J9 是有影响力的三大商用虚拟机之一。