[JVM] JVM简介

JVM:跨语言的平台

  • Java虚拟机不关心运行在其内部的程序是使用何种编程语言写的,只关心“字节码”文件。只要其他编程语言的编译结果满足并包含Java虚拟机的内部指令集、符号表以及其他的辅助信息,就能被虚拟机识别并装载。

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

  • JVM的位置

JVM的位置

JVM是运行在操作系统之上,与硬件没有直接的交互。

  • JVM的整体结构

JVM整体结构
详细图:
详细图

▪ 方法区和堆是多线程公用的,虚拟机栈、本地方法栈和程序计数器是线程独有的。
▪ 执行引擎(即操作系统)只能识别机器指令,字节码指令不等于机器指令,要使字节码指令能够执行,就需要借助执行引擎将高级语言翻译为机器语言。

  • Java代码执行流程

Java代码执行流程

▪ 操作系统CPU执行的是01的机器指令
▪ Java执行的二次编译,第一次编译是源码编译成class文件,第二次JIT编译器编译成操作系统能执行的机器语言

  • JVM的架构模型

由于跨平台性的设计,Java的指令都是根据来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。

  • 优点:跨平台,指令集小,编译器容易实现
  • 缺点:执行性能比寄存器差一些,实现同样的功能需要更多的指令
  • JVM的生命周期

虚拟机的启动:是通过引导类加载器(bootstrap class loader)创建一个初始类(initial class)来完成的
虚拟机的执行:程序开始执行的时候,虚拟机开始运行,程序结束时就停止。执行一个Java程序的时候,是在执行一个叫做Java虚拟机的进程。
虚拟机的退出

  • 程序正常执行结束
  • 程序在执行过程中遇到了异常或者错误而异常终止
  • 由于操作系统出现错误而导致Java虚拟机进程终止
  • 调用Runtime类的halt方法或者System类中的exit方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值