JVM概述
在没有接触过Java语言之前,就在Windows系统上安装过Visual Box虚拟机软件,Visual Box可以根据系统镜像虚拟出各种系统。那Java虚拟机又是何物呢?Java虚拟机也可以看成一个抽象的计算机(有自己的指令以及各种运行时内存区域),它可以虚拟出一个让Java语言编写出的程序(准确来说能说class文件表达出来的编程语言)能够执行的环境。Java虚拟机可以运行在Linux、macOS、Windows等系统上,从而Java语言编写的程序就可以运行在各系统平台上。所以JVM虚拟机是整个Java生态的基石。
Java的体系结构主要有Java编程语言、字节码、Java API 和Java 虚拟机等4部分独立却相关的技术组成。
JVM内部结构
1、类加载子系统
2、Java栈
3、方法区
4、Java堆
5、直接内存
6、本地方法栈
7、垃圾回收系统
8、PC寄存器
9、执行引擎
JVM 启动过程
如何启动一个JVM?
当我们执行 java [options] <mainclass> [args...]
命令的时候,其实就启动了一个JVM进程。启动过程如下:(来自《Java虚拟机精讲》)
运行环境准备—> 初始化JVM—>获取应用信息—> 执行Java class的main()方法—> 断开与主线程的连接—>销毁JVM
在JDK的安装目录下可以找到src.zip,其中有Java API和JVM Launcher的部分代码。
参考资料
- The Java Virtual Machine Specification, Java SE 8 Edition
- java-tutorial
- Java Virtual Machine (JVM) & its Architecture
- 《Java虚拟机规范 Java SE8版》
- 《Java虚拟机精讲》
- 《实战Java虚拟机:JVM故障诊断与性能优化》
- 《深入理解Java虚拟机:JVM高级特性与佳实践(第2版)》
- 《Java虚拟机规范(Java SE 8版)》
下一步计划:Java虚拟机JVM学习笔记(2):class文件