目录
0 前言
最近买了周志明的《深入理解Java虚拟机 JVM高级特性与最佳实践 》,结合网上的相关文章资料,尝试做一套JVM学习笔记,也算整理和巩固。相关引用文章,已罗列在参考篇中,若有侵权,烦请告知。
1 Java体系描述
1.1 Java体系构成
JAVA体系包括四个方面:
- JAVA编程语言,编辑的文件为Java源代码,文件格式为(.java);
- JAVA类文件格式,编译后文件格式为(.class);
- JAVA虚拟机,即通常所说的JVM;
- JAVA应用程序接口(Java API)。
这四者的运行关系如下:
- Java编译环境:程序员利用Java编程语言编写Java源代码(.java文件),利用Java编译器,将其编译为Java字节码(.class文件);
- Java平台运行环境:Java字节码被装载,进入Java虚拟机,被解释器(或者被即时编译器)解释执行,最终变为机器码进行处理。
1.2 Java平台描述
Java平台有Java虚拟机和Java应用程序接口构建,只要符合Java字节码编译规则的程序均可运行到Java平台上,包括应用程序和小应用程序,具体如下:
JVM承接程序和底层操作系统,它实现了程序和操作系统的分离,是两者无关的关键,通过JVM,实现了Java 的平台无关性:
- JVM的下方是移植接口,移植接口由两部分组成:适配器(依赖于平台部分)和Java操作系统,JVM通过移植接口在具体的平台和操作系统上实现。
- JVM的上方是Java的基本类库和API,利用Java API编写的应用程序可以在任何Java平台上运行而无需考虑底层平台。
2 JVM体系描述
2.1 JVM基本概念
(1) 基本概念: