当前位置:网站首页>JVM-JVM概述
JVM-JVM概述
2022-07-22 09:24:00 【向涛歌学习】
基本介绍
JVM:全称 Java Virtual Machine,即 Java 虚拟机,一种规范,本身是一个虚拟计算机,直接和操作系统进行交互,与硬件不直接交互,而操作系统可以帮我们完成和硬件进行交互的工作
特点:
- Java 虚拟机基于二进制字节码执行,由一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆、一个方法区等组成
- JVM 屏蔽了与操作系统平台相关的信息,从而能够让 Java 程序只需要生成能够在 JVM 上运行的字节码文件,通过该机制实现的跨平台性
Java 代码执行流程:Java 程序 --(编译)--> 字节码文件 --(解释执行)--> 操作系统(Win,Linux)
JVM 结构:

JVM、JRE、JDK 对比:
- JDK(Java SE Development Kit):Java 标准开发包,提供了编译、运行 Java 程序所需的各种工具和资源
- JRE( Java Runtime Environment):Java 运行环境,用于解释执行 Java 的字节码文件

参考书籍:https://book.douban.com/subject/34907497/
参考视频:https://www.bilibili.com/video/BV1PJ411n7xZ
参考视频:https://www.bilibili.com/video/BV1yE411Z7AP
架构模型
Java 编译器输入的指令流是一种基于栈的指令集架构。因为跨平台的设计,Java 的指令都是根据栈来设计的,不同平台 CPU 架构不同,所以不能设计为基于寄存器架构
- 基于栈式架构的特点:
- 设计和实现简单,适用于资源受限的系统
- 使用零地址指令方式分配,执行过程依赖操作栈,指令集更小,编译器容易实现
- 零地址指令:机器指令的一种,是指令系统中的一种不设地址字段的指令,只有操作码而没有地址码。这种指令有两种情况:一是无需操作数,另一种是操作数为默认的(隐含的),默认为操作数在寄存器(ACC)中,指令可直接访问寄存器
- 一地址指令:一个操作码对应一个地址码,通过地址码寻找操作数
- 不需要硬件的支持,可移植性更好,更好实现跨平台
- 基于寄存器架构的特点:
- 需要硬件的支持,可移植性差
- 性能更好,执行更高效,寄存器比内存快
- 以一地址指令、二地址指令、三地址指令为主
生命周期
JVM 的生命周期分为三个阶段,分别为:启动、运行、死亡
启动:当启动一个 Java 程序时,通过引导类加载器(bootstrap class loader)创建一个初始类(initial class),对于拥有 main 函数的类就是 JVM 实例运行的起点
运行:
main() 方法是一个程序的初始起点,任何线程均可由在此处启动
在 JVM 内部有两种线程类型,分别为:用户线程和守护线程,JVM 使用的是守护线程,main() 和其他线程使用的是用户线程,守护线程会随着用户线程的结束而结束
执行一个 Java 程序时,真真正正在执行的是一个 Java 虚拟机的进程
JVM 有两种运行模式 Server 与 Client,两种模式的区别在于:Client 模式启动速度较快,Server 模式启动较慢;但是启动进入稳定期长期运行之后 Server 模式的程序运行速度比 Client 要快很多
Server 模式启动的 JVM 采用的是重量级的虚拟机,对程序采用了更多的优化;Client 模式启动的 JVM 采用的是轻量级的虚拟机
死亡:
- 当程序中的用户线程都中止,JVM 才会退出
- 程序正常执行结束、程序异常或错误而异常终止、操作系统错误导致终止
- 线程调用 Runtime 类 halt 方法或 System 类 exit 方法,并且 Java 安全管理器允许这次 exit 或 halt 操作
边栏推荐
- Leetcode 116. fill in the next right node pointer of each node
- When serializing JSON objects, how to return JSON strings with attribute names with null values?
- 程序员面试金典面试题 01.04. 回文排列
- PCV, PIL, pilot installation
- 数据库出现乱码,求解决办法、思路?
- 1.mysql null 和 in;2.127.0.0.2是啥?
- LeetCode 653. 两数之和 IV - 输入 BST
- Pat grade B 1020 moon cake (pay attention to the measuring points)
- Summary 20220210
- 1. A complete instance of movetothread, 2. QT expression evaluation
猜你喜欢
Thymeleaf中一个页面怎么嵌套另一个页面,关于页面嵌套,标签告诉你应该知道的
PTA基础题 7-23 币值转换 (20 分) (属实恶心)
STM32+ESP8266+MQTT协议连接OneNet物联网平台
bjyx
Randomly query n pieces of data in various databases
mysql主从复制
Stm32+esp8266+mqtt protocol connects onenet IOT platform
Important knowledge points of go language: string, UTF-8 encoding, Rune
【YOLOv5实战4】基于YOLOv5的交通标志识别系统-模型测试与评估
Flink学习笔记(四)Flink运行时架构
随机推荐
各种资料汇总-网络
牛人专栏-博客汇总
程序员面试金典面试题 01.03. URL化
Sub database and sub table
Qt | boîtes de dialogue modales et non modales qdialog
Exercise 7-4 find out the elements that are not common to two arrays (C language)
1. Qtablewidget insert button, flexibly delete the line, and display the line number in one column
1. Closeable of qtablewidget, 2.pro/build_ pass、member,3.QString&&
【QT源代码复用】QDateTimeEdit的下拉按钮事件响应
分库分表
JSON序列化对象时,如何返回有空值的带属性名称json字符串?
PTA基础题 7-23 币值转换 (20 分) (属实恶心)
Upgrade win10sp1 to the latest version; Qt5.9.6 static compilation (network is valid)
Summary 20220119
06. Liskov Substitution Principle (LSP)
Stm32+esp8266+mqtt protocol connects onenet IOT platform
数据优化的方式
win10sp1升到最新版本;QT5.9.6静态编译(network有效)
PTA exercise 8-8 judging palindrome string
STM32+ESP8266+MQTT协议连接OneNet物联网平台