当前位置:网站首页>JVM基本结构
JVM基本结构
2022-08-10 18:20:00 【Jan_ssen】
JVM主要分为四部分:
1. 类加载器(Class Loader)
2. 运行时数据区(Runtime Data Area)
3. 执行引擎(Execution Engine)
4. 本地库接口(Native Interface)
其中,运行时数据区(内存布局)又分为程序计数器、虚拟机栈、本地方法栈、堆和方法区,其中,两栈一器私有,堆和方法区共享。
一、堆(线程共享)
堆中存放几乎所有对象实例,所有程序所创建的对象均保存在堆中。
二、Java虚拟机栈(线程私有)
虚拟机栈存放的是各类基本数据类型和对象的引用,包含四部分
1. 局部变量表: 存放了编译器可知的各种基本数据类型(8大基本数据类型)、对象引用。局部变量表所需的内存空间在编译期间完成分配,当进入一个方法时,这个方法需要在帧中分配多大的局部变量空间是完全确定的,在执行期间不会改变局部变量表大小。简单来说就是存放方法参数和局部变量。
2. 操作栈:每个方法会生成一个先进后出的操作栈。
3. 动态链接:指向运行时常量池的方法引用。
4. 方法返回地址:PC 寄存器的地址。
三、本地方法栈(线程私有)
本地方法栈和虚拟机栈类似,只不过虚拟机栈是给JVM使用的,本地方法栈是给本地方法使用的。
四、程序计数器(线程私有)
每条线程都有自己的程序计数器,用来记录代码执行到的位置(行号)
五、方法区(线程共享)
用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。
边栏推荐
- pip3升级到22.2.2
- AVFrame related api memory management
- 组合模式
- 【HMS core】【FAQ】Account Kit、push Kit典型问题合集1
- 搭载2.8K 120Hz OLED华硕好屏 无畏Pro15 2022锐龙版屏开得胜
- 【FAQ】【Push Kit】 华为怎么设置角标
- php7中使用“??”运算符
- 2022-08-09 Study Notes day32-IO Stream
- 【HMS core】【FAQ】AR Engine、Analytics Kit、Video Editor Kit、Image Kit、Map Kit典型问题合集2
- 电路板ROHS测试报告怎么办理?电路板ROHS检测流程
猜你喜欢

【快应用】实现自定义导航栏组件

2022-08-09 Study Notes day32-IO Stream

MySQL 原理与优化:Update 优化

Consul Introduction and Installation

D-Wave成功上市!量子计算商业化正在加速

Toronto Research Chemicals萜烯分析丨(+)-柠檬烯

【FAQ】【Push Kit】推送服务,回执配置一直报错、回执过期修改、怎么删除配置的回执

Toronto Research Chemicals 双(乙酰丙酮)铂(II)

入门:人脸专集2 | 人脸关键点检测汇总(文末有相关文章链接)

requires ‘angle‘ attribute to be a multiple of 45
随机推荐
位算符详解 按位与、或、异或、取反、左移、右移
【FAQ】HarmonyOS ETS如何给组件设置边框
MongoDB教程
Toronto Research Chemicals霉菌毒素分析丨T2 四醇
网络层总结(未完待续)
微服务架构-实现技术之六大基础组件:服务通信+事件驱动+负载均衡+服务路由+API网关+配置管理
MySQL 原理与优化:Update 优化
Toronto Research Chemicals农药检测丨甲硫威
eager模式和graph模式 Tensorflow
CSV(Comma-Separate-Values)逗号分隔值文件
去除富文本标签样式
StoneDB Document Bug Hunting Season 1
【HMS core】【FAQ】Account Kit、push Kit典型问题合集1
JSON serialization and deserialization using Jackson API in Scala
Xilinx FPGA收发器参考时钟设计应用
记录某博彩网站渗透
Scala中使用 Jackson API 进行JSON序列化和反序列化
破解校园数字安全难点,联想推出智慧教育安全体系
实用工具在线网站
面试题 04.12. 求和路径-dfs+辅助数组法