勿在流沙住高台, 出来混迟早要还的.
做一个积极的人
编码, 改 bug, 提升自己
我有一个乐园, 面向编程, 春暖花开!
上一篇分享了什么是程序, 以及 Java 程序运行的三个阶段. 也顺便提到了 Java 中比较重要的一个东西就是 JVM(JAVA 虚拟机), 那么今天在先了解一下 JVM 和 JVM 的启动流程.
知识地图:
1, 什么是虚拟机
虚拟机 (Virtual Machine) 指通过软件模拟的具有完整硬件 https://baike.baidu.com/item/硬件 系统功能的, 运行在一个完全隔离环境中的完整计算机系统.[百度百科]
虚拟机通过仿真引擎 (称为管理程序) 处理虚拟硬件, 包括 CPU, 内存, 硬盘驱动器, 网络接口和其他设备. 虚拟机管理程序提供的虚拟硬件设备映射到物理机器上的实际硬件, 表现为虚拟机的虚拟硬盘存储在硬盘驱动器上的文件中.
有哪些种类的虚拟机呢?
系统虚拟机, 例如: VMware,Visual box
程序虚拟机, 例如: Java 虚拟机(JVM)
操作系统层虚拟化, 例如: Docker
上面这三种虚拟机类型, 作为当代的程序员都一定听过或者用过吧, 如果没有的话, 那就跟上我的步伐, 先学学 JVM 喽.
在说明一点: 每一种类型的虚拟机都有不同和它们应对的使用场景:
VMVare 或者 Visual box 都是使用软件模拟物理 CPU 的指令集
JVM 使用软件模拟 Java 字节码的指令集
2, 初始 JVM
2.1 JAVA 和 JVM 的历史
想要了解 JVM 那就一定要说一下 Java 的发展了, 但是这里不对 Java 的发展做介绍, 简单说明一下 Java 中的 JDK 和 JRE(基础的东西也比较重要, 因为面试可能回被闻到)!
JDK 和 JRE 的区别 :JDK = JRE + Develop 环境
JDK(Java Development Kit)是面向开发人员使用的 SDK, 它提供了 Java 的开发环境和运行环境.
JRE 是 Java Runtime Enviroment 是指 Java 的运行环境, 是面向 Java 程序的使用者, 而不是开发者.
注意: 一般在生产环境上只需要安装 JRE 就可以了!
引用网上的一张图片说明:
从 Java 发布也就是 JDk1.0 开始的 Classic VM, 到逐渐发展在 JDK1.3 的时候出现 Hotspot(作为默认虚拟机发布), 到 JDK1.4 Classic VM 退役, 到目前 Hotspot 依旧在继续发光发热. 如下 JDK1.8:
- -- java -version
- java version "1.8.0_121"
- Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
- Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
备注:
1, 使用最为广泛的 JVM 为 HotSpot 2,HotSpot 为 Longview Technologies 开发, 被 SUN 收购 3,2006 年 Java 开源, 并建立 OpenJDK,HotSpot 成为 Sun JDK 和 OpenJDK 中所带的虚拟机 4,2008 年 Oracle 收购 BEA, 得到 JRpckit VM 5,2010 年 Oracle 收购 Sun, 得到 Hotspot 6,Oracle 宣布在 JDK8 时整合 JRockit 和 Hotspt, 优势互补, 在 Hotspot 基础上, 一直 JRockit 优秀特性.
2.2 JVM 规范简介
在 JVM 中定义了很多的规范, 下面做个简单的介绍:
JAVA 语言规范
语法
变量
类型
文法
JVM 规范
Class 文件类型
运行时数据
帧栈
虚拟机的启动
虚拟机的指令集
通过一系列的具体规范, 符合规范的程序才能在 JVM 中进行运行, 也就是无规矩不成方圆!
JVM 是一个规范, 一个文档, 任何人或者组织都可以通过这个规范自己实现具体的 JVM.
HotSpot 只是 JVM 规范的一个实现了(其他的 JVM 实现如: IBM J9 VM,JRockit 等).
这个可以类比 JPA ,JPA 也是一个规范了, 目前 JPA 主要实现由 hibernate 和 openJPA 等.
3,JVM 启动流程
平时我们在 IDE 中编写代码后, 直接运行, 根本感受 JVM 的存在. 但是它的确真实存在, 并且还有一套自己的运行流程.
其实初学 JAVA 的伙伴可能体会比较深, 因为我们在文本中编写好代码后, 要执行 javac 编译, 然后在执行 java 进行运行.
那么整个 JVM 的启动流程是什么样子的呢? 请看下图:
上面这张图和下面这一张图参考一起看:
其中的 jvm.cfg ,jvm.dll 等在安装的 jdk 环境中都可以找到:
说明: 启动成功后, 当该程序关闭退出, 这个虚拟机实例也就随之消亡! 如我们允许的 main 方面在 IDE 中控制台上面有个红色的点, 那个点关闭变灰后也就意味着虚拟机实例的消亡.
总结
本篇简单介绍了 JVM 的一些基础的知识, 后续慢慢深入学习, 一起探索 JVM 世界!
谢谢你的阅读, 如果您觉得这篇博文对你有帮助, 请点赞或者喜欢, 让更多的人看到! 祝你每天开心愉快!
不管做什么, 只要坚持下去就会看到不一样! 在路上, 不卑不亢!
博客首页 : http://blog.csdn.net/u010648555 http://blog.csdn.net/u010648555
愿你我在人生的路上能都变成最好的自己, 能够成为一个独挡一面的人
© 每天都在变得更好的阿飞云
Java 内存管理 - 初始 JVM 和 JVM 启动流程(二)
来源: http://www.bubuko.com/infodetail-2994431.html