【JVM虚拟机】

JVM虚拟机

一、JVM概述

JVM(Java Virtual Machine)是Java虚拟机的缩写,它是在物理计算机上模拟的计算机,用于执行Java字节码指令。

二、JVM运行流程

两个子系统为 类装载子系统 ClassLoader,执行引擎子系统 Execution engine;

类加载子系统:包含类加载器;根据给定的全限定类名装在class文件到运行时数据区的方法区;

执行引擎:包含即时编译器(JITCompiler)和垃圾回收器(Garbage Collector);执行class文件中的命令;

两个组件为 运行时数据区 Runtime data Area, 是jvm的内存;包含方法区,虚拟机栈,本地方法栈,堆,程序计数器;

本地接口 Native Interface 与本地方法库交互,与其他变成语言交互的接口;

程序执行之前需要先把 java 代码转换成字节码( class 文件), JVM 首先需要把字节码通过一定的方式 类加载器( ClassLoader ) 把文件加载到内存中 运行时数据区。字节码文件不能直接被底层操作系统执行,它是 JVM 的一套指令集规范,所以需要特定的命令解析器执行引擎将它翻译成底层系统指令再由cpu执行,而这个过程中需要调用其他语言的接口本地库接口来实现整个程序的功能

三、JVM特点

3.1 跨平台性

3.2 垃圾回收机制

相关推荐
2401_897190554 分钟前
JavaScript对象浅拷贝:Object-assign的合并规则
jvm·数据库·python
Shorasul9 分钟前
如何用 fill 配合 map 初始化一个填充了不同对象的数组
jvm·数据库·python
weixin_5860614612 分钟前
golang如何使用go-redis客户端_golang go-redis客户端使用教程
jvm·数据库·python
m0_3776182325 分钟前
C# 异步范围Asynchronous Disposal方法 C# await using如何使用
jvm·数据库·python
qq_189807031 小时前
SQL多表嵌套查询数据重复怎么办_使用DISTINCT去重优化策略
jvm·数据库·python
m0_747854521 小时前
mysql如何设置数据库连接字符编码_修改default-character
jvm·数据库·python
Wyz201210241 小时前
如何在 React 中正确将父组件函数传递给子组件并触发调用
jvm·数据库·python
2401_865439631 小时前
Go语言如何用logrus_Go语言logrus日志框架教程【技巧】
jvm·数据库·python
NotFound4861 小时前
CSS如何利用Flex实现悬浮的侧边按钮组_利用fixed定位与flex布局组合
jvm·数据库·python
qq_189807032 小时前
Golang怎么实现RBAC权限控制_Golang如何用casbin实现基于角色的访问控制系统【教程】
jvm·数据库·python