当前位置: 首页 > news >正文

JVM简述

    • JDK&JRE&JVM
    • JVM运行时内存结构图
          • 方法区
          • 堆区
          • 栈区
          • 程序计数器
          • 本地方法栈
    • JVM 的主要组成部分及其作用

JDK&JRE&JVM

在这里插入图片描述

JVM就是java虚拟机,一台虚拟的机器,用来运行java代码
但并不是只有这台机器就可以的,java程序在运行时需要依赖系统的类库,那么加上这些类库,就会形成完整的运行环境,我们称为JRE
对于开发人员,我们还需要一些编写代码的各种编译工具,加上这些工具,就会形成我们的JDK,也就是java开发工具包

JVM运行时内存结构图

在这里插入图片描述
方法区和堆区是所有线程共享的
栈区、程序计数器、本地方法栈是线程独立的,也就是说每个线程在里面都有独立的区域,它们不共享

方法区

存储类的信息

堆区

新生代(伊甸区、幸存者区、幸存者区)、老年代

栈区

每个线程开辟独立栈,栈帧中包含局部变量表,操作数栈等等

程序计数器

使用地址对字节码指令

其实就是PC寄存器,通过它来记录程序运行的一条一条的指令,在内存里找到该指令,并执行,通过不断修改寄存器里面的内容,就可以定位不同的指令,找到该指令在内存里面的位置,并执行

本地方法栈

跟java栈类似,针对C等语言的本地方法栈

JVM 的主要组成部分及其作用

JVM包含两个子系统和两个组件,两个子系统为Class loader(类装载)Execution engine(执行引擎);两个组件为Runtime data area(运行时数据区)Native Interface(本地接口)

  • Class loader( 类 装 载 ): 根 据 给 定 的 全 限 定 名 类 名 ( 如 : java.lang.Object)来装载class文件到Runtime data area中的methodarea。
  • Execution engine(执行引擎):执行classes中的指令。
  • Native Interface(本地接口):与native libraries交互,是其它编程语言交互的接口。
  • Runtime data area(运行时数据区域):这就是我们常说的JVM的内存。

作用:
首先,通过类加载器会把 Java 代码转换成字节码;

其次,运行时数据区再把字节码加载到内存中,而字节码文件只是 JVM 的一套指令集规范,并不能直接交给底层操作系统去执行;

于是,需要特定的命令解析器执行引擎,将字节码翻译成底层系统指令,再交由 CPU 去执行;

最后,此过程中需要调用其他语言的本地库接口来实现整个程序的功能。

http://www.lryc.cn/news/98370.html

相关文章:

  • 7.25训练总结
  • java注解@FeignClient修饰的类路径不在spring boot入口类所在的包下,有哪几种处理方式?
  • 神经网络随记-参数矩阵、剪枝、模型压缩、大小匹配、、
  • 4、Kubernetes 集群 YAML 文件详解
  • leetcode93. 复原 IP 地址(java)
  • 极光Java 版本服务器端实现别名消息推送
  • 【Lua学习笔记】Lua进阶——Table(4)继承,封装,多态
  • 安全性证明(四)Practical Identity-Based Encryption Without Random Oracles
  • Linux中常用的指令
  • 【java】【面对对象高级4】内部类、枚举、泛型
  • Python的用处到底是什么?(三)
  • 【Nodejs】Express基本使用
  • k8s集群安装v1.20.9
  • Staples Drop Ship EDI 需求分析
  • 模型调参及优化
  • 多数据源数据转换和同步的ETL工具推荐
  • 配置 gitlab https 访问
  • Kepware Modbus驱动简介
  • 从零开始学习CTF——CTF是什么
  • 为Android构建现代应用——主体结构
  • 【shell脚本】shell脚本之日志切割(进阶实战三)
  • VMLogin和虚拟机里的浏览器有什么区别?
  • unimrcp server的session资源分配与回收
  • 【图论】三种中心性 —— 特征向量、katz 和 PageRank
  • [sqoop]将hive查询后的数据导入到MySQL
  • Linux df、du命令
  • java版+免费商城搭建+小程序商城免费搭建+Spring Cloud + Spring Boot + MybatisPlus + 前后端分离 + 二次开发
  • 软件设计师学习第一章
  • 蓝桥杯单片机第十一届国赛 真题+代码
  • IDC报告背后:大模型时代,重新理解AI公有云