JVM学习笔记一

JVM简介

Java称为跨平台的语言;JVM可以称为是跨语言的平台;JVM只关心字节码文件,只要编译的字节码文件符合JVM规范即可。
JVM学习笔记一_第1张图片
JVM的发展趋势:
多语言混合编程是一个发展的趋势:特定领域的语言去解决特定领域的问题,最后统一的运行在JVM上。(编译成JVM字节码)

JDK11新发布的具有革命性意义的垃圾收集器:
ZGC是JDK11发布的新的垃圾回收器,未来用于替换G1垃圾回收器。(经测试ZGC已经在各方面超过G1)

特点:
1、一次编译,到处运行
2、自动的内存管理
3、自动的垃圾回收功能

JVM的位置:
JVM学习笔记一_第2张图片

JDK=JRE+工具类(JDK构成图)
JVM学习笔记一_第3张图片

注意: 字节码指令不等于机器指令,需要使用执行引擎来执行字节码文件。

Java代码执行的详细流程:

JVM学习笔记一_第4张图片
两种指令集架构: (JVM使用的是基于栈的指令集架构)
JVM学习笔记一_第5张图片
栈的指令集小,但执行操作的指令更多。基于寄存器架构的相反,指令集大,但执行操作是指令更少。
JVM学习笔记一_第6张图片
基于栈的架构设计:
优点:
不依赖硬件,便于移植跨平台性
指令集小,编译器更容易实现(采用零地址指令)

缺点:
指令多,执行的性能比寄存器差。

JVM学习笔记一_第7张图片

JVM学习笔记一_第8张图片
JVM学习笔记一_第9张图片
世界上第一款商用的虚拟机:Sun classic VM,只提供了解释器(使用即时编译器需要外挂,且不能和解释器配合工作,二者只能选择其一。)
Exact VM:具备了现代高性能虚拟机的特性,具有热点探测;解释器和即时编译器混合工作模式。

三大主流商用的虚拟机:
HotSpot虚拟机:编译器和解释器协同工作。从JDK1.3使用到现在;(只有HotSpot有方法区的概念)
JRocket:专注于服务器端的应用;只使用即时编译器,不使用解释器(是世界上执行速度最快的虚拟机)

J9:IBM公司的虚拟机。

你可能感兴趣的:(JVM)