JVM 虚拟机,基础原理总结

一、虚拟机简介

1、虚拟机概念

虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在实体计算机中能够完成的工作在虚拟机中都能够实现。在计算机中创建虚拟机时,需要将实体机的部分硬盘和内存容量作为虚拟机的硬盘和内存容量。每个虚拟机都有独立的 CMOS、硬盘和操作系统,可以像使用实体机一样对虚拟机进行操作。

2、JVM 虚拟机

JVM 是 Java-Virtual-Machine 的缩写,即 Java 虚拟机,JVM 是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

3、JVM 特点

首先一次编译处处运行是学习 Java 语言都知道的事情,其实并不是 Java 语言跨平台,是 JVM 跨平台,Jvm 运行时并不是执行 Java 文件,而是执行编译后的.class 文件。

字节码

字节码文件即 JVM 可以识别并执行的二进制文件,不同的编程语言经过编译器编译处理之后,转换成统一的字节码规范文件,这样 JVM 就可以执行。

跨平台

跨平台的特性即 JVM 虚拟机可以运行在不同的计算机系统上,例如经常使用的 Linux 系统,MacOS 系统,Win 系统,一次编译,处处运行就是这样理解的。

跨语言

随着 JVM 的不断发展和优化,很多语言都借助 JVM 的能力,各种编程语言经过编译,转换为字节码文件,JVM 都可以识别,这也是现在 Java 体系下业务编程经常混语言的原因。

注意:现在和后续 Jvm 系列文章都是基于 HotSpot-VM 和 JDK1.8+版本的基础之上。

二、虚拟机结构

Jvm 整体结构大致如下:

1、类加载器

类加载器用来加载 Java 类到 JVM 虚拟机中,源代码程序.java 文件在经过编译器编译之后就被转换成字节代码.class 文件,类加载器负责读取字节代码,并转换成 java.lang.Class 类的一个实例。

2、运行时数据区

元数据区

JDK1.8 开始的说法,之前称为方法区 Method-Area,存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。

堆区

所有线程共享的一块内存区域,虚拟机启动时被创建用来存放对象实例。

JVM 栈

可以参考了解栈的数据结构,存放 Java 方法执行的内存模型,在 Java 开发中,一个功能实现需要多个子程序方法配合,程序执行时跳往子程序前,会将下个指令的地址存到堆栈中,直到子程序执行完后再将地址取出,退回到原来的程序中。

本地方法栈

本地方法栈和虚拟机栈的功能类似,为 JVM 调用 native 方法是服务。

程序计数器

相对较小的一块内存空间,作用可以理解是当前线程所执行的字节码的信号指示器。

3、执行引擎

Java 虚拟机最核心的组成部分,输入的是字节码,处理过程是字节码解析,输出执行结果。

三、生命周期

这里说的 JVM 生命周期,指 JVM 执行 Java 程序的周期:

启动初始化:启动时通过引导类加载器创建初始类完成;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值