深入理解JVM虚拟机第六篇:内存结构与类加载子系统概述

news2024/11/28 5:34:52

文章目录

一:内存结构概述

1:运行时数据区

2:运行时数据区简图

3:运行时数据区详细图中英文版 

二:类加载器子系统 

1:加载

2:连接

3:初始化


一:内存结构概述

1:运行时数据区

        class文件被称为字节码文件,从字节码文件之后都是由我们的JVM负责的了。

        首先需要就是基于ClassLoader将我们的类加载到JVM当中,对应到我们的内存当中生成大的Class对象,并将静态属性进行一个初始化,当前这个操作主要是在方法区体现他的操作。

        当我们真正字节码指令的时后,执行引擎就开始发挥作用了,一开始是我们的执行引擎。按照字节码指令依次是去做执行。这里边就涉及到虚拟机栈的从局部变量表中去取数据,包括还需要操作操作数栈。如果需要创建对象的话,还需要使用到我们的堆空间,在这个过程中我们的指令依次往下走的话需要用到程序计数器。如果在整个过程中需要调用本地方法的话,还需要使用本地方法栈。

        以上就是运行时数据区的一个概念。

2:运行时数据区简图

        

3:运行时数据区详细图中英文版 

 

        

 

二:类加载器子系统 

        类加载阶段涉及到三个大阶段:

1:加载

        加载阶段需要用到我们的类加载器,这里共涉及到三类加载器:引导类加载器、拓展类加载器、系统类加载器(应用级加载器)。

2:连接

连接阶段又分为:验证、准备、解析阶段。

3:初始化

静态变量的显示初始化。

        接下来,在整个的这个过程中我们就把Java中的类或者接口都加载进入到JVM当中了。这个时候,我们在运行时数据区里边。虚拟机栈、本地方法栈、程序计数器都是每个线程一份。

        栈里边的一个又一个的结构被称之为栈帧。栈帧还有很细节的内部结构。LV代表本地变量表,OS代表操作数栈,DL代表动态链接,RA代表方法返回地址。

        本地方法栈跟虚拟机栈的区别,他是专门调用native的本地方法的。

        堆区是最大的一块空间。GC主要伺候的一个空间。方法区主要是存放类的信息、常量、域信息、方法信息等。方法区只有Hotspot虚拟机才有,其他的虚拟机都没有。

        解释器和JIT及时编译器和我们的垃圾回收期都在我们的执行引擎中。他的作用就是将我们的指令翻译成为机器指令,供CPU去执行。

        如果自己手写一个Java虚拟机的话,主要考虑哪些结构呢? 类加载器和执行引擎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1008548.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CAN基础概念

文章目录 目的控制器、收发器、总线帧格式CAN2.0和CAN-FD波特率与采样点工作模式总结 目的 CAN是非常常用的一种数据总线,被广泛用在各种车辆系统中。大多数时候CAN的控制器和收发器干了比较多的工作,从而对于写代码使用来说比较简单。这篇文章将对CAN使…

经历网数据库共享

经历网,为留住您的经历而生 点击 经历网 进入网站查看当前数据 经历网网址:https://www.jili20.com/ 以下 数据库 数据 截止至 2023年9月13日 1)百度网盘 提取 链接:https://pan.baidu.com/s/1WwR4cI9lbSAYTuffo8qmVQ 或点击 此…

微信小程序的在线课外阅读打卡记录系统uniapp

本文从管理员、学生和教师的功能要求出发,中学课外阅读记录系统中的功能模块主要是实现学生、教师、阅读任务、阅读打卡、提醒信息、阅读排行、任务计划、阅读类型、在线考试等。经过认真细致的研究,精心准备和规划,最后测试成功,…

zemax畸变与消畸变

物体不同位置的放大率不同,产生图形变形 这里选择zemax自带的案例: 畸变效果: 明显的负畸变(桶形畸变) 从场曲畸变图中可以看出: 该系统的最大畸变大约为38% 放入图片观察成像效果: 优化操作数…

GpsAndMap模块开源,欢迎测评

背景 之前的文章有提到,最近在使用folium的过程中,深感对于一个非专业人员来说,GPS坐标以及其所隐含的GPS坐标系,以及不同GPS坐标系之间的相互转换关系,不是一个十分清晰的概念,往往造成在使用GPS坐标在fo…

基本的SELECT语句——“MySQL数据库”

各位CSDN的uu们好呀,好久没有更新小雅兰的MySQL数据库专栏啦,接下来一段时间,小雅兰都会更新MySQL数据库的知识,下面,让我们进入今天的主题吧——基本的SELECT语句!!! SQL概述 SQL语…

Linux - 性能可观察性工具

文章目录 常用的Linux性能可观察性工具图解小结 常用的Linux性能可观察性工具 以下是一些常用的Linux性能可观察性工具: top: 显示实时的系统性能数据,包括CPU使用率、内存使用情况、进程信息等。 htop: 类似于top,但提供了更多的交互式功能…

谷粒商城----rabbitmq

一、 为什么要用 MQ? 三大好处,削峰,解耦,异步。 削峰 比如秒杀,或者高铁抢票,请求在某些时间点实在是太多了,服务器处理不过来,可以把请求放到 MQ 里面缓冲一下,把一秒内收到的…

Arcgis栅格转点时ERROR 999999: 执行函数时出错。 无法创建要素数据集。 执行(RasterToPoint)失败

Arcgis栅格转点时ERROR 999999: 执行函数时出错。 无法创建要素数据集。 执行(RasterToPoint)失败。 问题描述 原因 输出点要素的位置不对 解决方案 点击新建文件地理数据库 然后在该文件地理数据库下输出

RocketMQ 消息传递模型

文章目录 0. 前言1. RocketMQ的消息传递模型1.1. 同步发送1.2. 异步发送1.3. 单向发送 2. RocketMQ的批量发送和消费2.1 批量发送2.2 批量消费2.3 Spring Boot集成RocketMQ官方starter 示例 3. 总结4. 参考文档5. 源码地址 0. 前言 RocketMQ 支持6种消息传递方式,我…

【Java 基础篇】Java 泛型:类型安全的编程指南

在 Java 编程中,泛型是一项强大的特性,它允许您编写更通用、更安全和更灵活的代码。无论您是初学者还是有经验的 Java 开发人员,了解和掌握泛型都是非常重要的。本篇博客将从基础概念一直深入到高级应用,详细介绍 Java 泛型。 什…

nrf52832蓝牙GAP 通用访问规范

nrf52832蓝牙GAP 通用访问规范 文章目录 nrf52832蓝牙GAP 通用访问规范前言一、蓝牙GAP(通用访问配置文件)可以设置什么参数?二、使用步骤广播名称修改广播名字长度;全显示和自定义显示中文显示广播名称 蓝牙图标没有图标加入图标…

ArmSom-W3开发板之PCIE的开发指南(一)

1. 简介 RK3588从入门到精通本⽂介绍RK平台配置pcie的方法开发板:ArmSoM-W3 2、PCIE接口概述 PCIe(Peripheral Component Interconnect Express)是一种用于连接计算机内部组件的高速接口标准。以下是关于PCIe接口的简要介绍: …

【计算机网络】 TCP流量控制——滑动窗口和累积应答

文章目录 累积应答TCP流量控制——滑动窗口 累积应答 我们前面所说的是我们每发送一个包对端就要回一个ack,那么这样效率太慢了,我们这里就有一个累积应答的机制,就是说我们客户端累积发送多个包,然后服务端再统一进行回复。 TCP…

被“多元平等共融”种草——2023谷歌开发者大会参会体验

谷歌开发者大会又称Google I/O Connect,是谷歌公司每年一次举办的开发者年会,谷歌中国的开发者大会按照惯例是在每年9月份的上海世博中心举办,为期两天。这两天中,通过主旨大会和多场连续专题演讲以及现场演示向参会人员展示谷歌产…

【Teams】Teams的组织名称变更

最近在使用Teams的过程中,发现有些企业创建组织的过程中创建了默认的组织:MSFT。如果创建组织的过程中没有修改组织名称,我们就会发现默认的组织名称就是MSFT。如果多个企业没有更改MSFT则可能在切换Teams账户的时候可能不知道目前Teams切换的…

Jetpack Compose基础组件之 — Text

Text的源码参数预览 Composable fun Text(text: String,modifier: Modifier Modifier,color: Color Color.Unspecified,fontSize: TextUnit TextUnit.Unspecified,fontStyle: FontStyle? null,fontWeight: FontWeight? null,fontFamily: FontFamily? null,letterSpac…

YOLO物体检测-系列教程1:YOLOV1整体解读(预选框/置信度/分类任/回归任务/损失函数/公式解析/置信度/非极大值抑制)

🎈🎈🎈YOLO 系列教程 总目录 YOLOV1整体解读 YOLOV2整体解读 YOLOV1提出论文:You Only Look Once: Unified, Real-Time Object Detection 1、物体检测经典方法 two-stage(两阶段):Faster-rc…

PMP-项目启动过程组的重要性

一、什么是项目启动过程组 启动过程组包括定义一个新项目或现有项目的一个新阶段,授权开始该项目或阶段的一组过程。启动过程组的目的是:协调相关方期望与项目目的,告知相关方项目范围和目标,并商讨他们对项目及相关阶段的参与将如…

flask查询工具

fist_index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>电话查询工具</title> </head> <body><table><form action"/search_phone" method"get&…