java虚拟机的基本结构

Java 虚拟机基本结构 java虚拟机的基本结构如图所示:基本的结构有8个类加载子系统: 主要负责负责加载Class信息,加载的类信息都存放在方法区的类存空间中。 当JVM使用类加载器装载某个类时,它首先要定位对应的class文件,然后读入这个class文件,最后,JVM提取该文件的内容信息,并将这些信息存储到方法区,最后返回一个class实例方法区:方法区主要存储的是方法,静态成员,常量。方法区中给每个类都规定了空间并... 阅读详情

JVM启动流程

这里写图片描述
其中jvm.cfg是jvm的配置文件

JVM基本结构

这里写图片描述

PC寄存器

每个线程拥有一个PC寄存器,在线程创建时创建,指向下一条指令的地址。如果是执行本地方法时,PC的值为undefined。

想一下为什么jvm虚拟机只有一个寄存器——PC寄存器?

因为JVM是软件虚拟,无法使用寄存器的硬件优势,所以JVM本就不存在真正意义上的寄存器。

内存空间

方法区

保存装载的类信息(类的元信息)

  1. 类型的常量池
  2. 字段,方法信息
  3. 方法字节码

通常和永久区(Perm)关联在一起
这里可以注意一个细节对于String的常量,在jdk7的时候由原来不存在方法区的常量池中修改为保存在堆中常量池。

java堆

java堆是线程共有的区域,应用系统对象保存在java堆

java栈

java栈是线程私有的,主要保存的单元是栈帧,栈帧由局部变量表,操作数栈,帧数据区组成。
局部变量表包含——局部变量以及函数参数
操作数栈包含——计算过程中的中间结果
帧数据区——保存访问常量池的指针,已经对异常处理的时候需要的异常处理表也在帧数据区。

栈上分配

栈上分配指java虚拟机提供的一项优化技术,它的基本思想是:对于哪些线程私有的对象(不可能被其他线程访问),可以将它们打散分配在栈上,而不是分配在堆上。这样的好处是不需要GC的介入,当函数返回的时候自动销毁栈上的数据。
栈上分配的基础是进行逃逸分析,这里举个例子:
这里写图片描述
对于第二个函数的user虚拟机进行有化的化,就会在栈上分配。

栈、堆、方法区交互

举个例子:
这里写图片描述
这里写图片描述

JVM内存模型

参考:

售货机非现金支付开发指南:MDB协议下VPOS刷卡器的那些坑 本文深入探讨了MDB协议下非现金支付设备的开发实践,重点解析了NAYAX VPOS刷卡器的集成难点与解决方案。从RS232通信参数配置到Always idle功能实现,提供了一套完整的售货机支付系统开发指南,帮助开发者规避常见陷阱,提升设备兼容性与交易稳定性。 阅读详情

相关推荐

Android中的Service:Binder,Messenger,AIDL(2)

前言前面一篇博文介绍了关于Service的一些基本知识,包括service是什么,怎么创建一个service,创建了一个service之后如何启动它等等。在这一篇博文里有一些需要前一篇铺垫的东西,建议没有看过前一篇博文的同学先去看一下前一篇: Android中的Service:默默的奉献者 (1) 。但是在前一篇博文中也有一些遗漏的东西——主要是关于bindService()这一块的具体细节。由于这

lypeer的专栏 5万+

Java虚拟机的基本结构

本章主要介绍了Java虚拟机的基本结构,其中,对Java堆、Java栈和方法区做了较为完整的说明。同时,也对如何设置Jva虚拟机参数做了简要说明。

guye 2275

反相器(inverter)和缓冲器(buffer)---附加与非门原理图

下面是对反相器(Inverter)和缓冲器(Buffer)从面积、驱动能力、时序等多个角度的详细对比,列出的是一般情况下的比较,具体情况可能会受到工艺节点、设计库和特定设计要求的影响。缓冲器(Buffer)是数字电路中常见的逻辑门之一,用于增强信号的驱动能力,而不改变信号的逻辑状态。如下图所示的CMOS反相器,由一个NMOS和PMOS组成,栅端gate相连作为输入端Vin,漏端相连作为输出端Vout,NMOS的源端接地,PMOS的源端接电源VDD.与反相器不同,缓冲器的输出与输入保持相同的逻辑状态。

hzmscut的博客 1万+

重读 JVM

秋招开始了,前面由于做别的事耽误了半个月,以前学的东西不用就很容易忘记。所以,这次重新阅读《深入理解 JVM 虚拟机》时,想做一个记录。将碎片的知识整合,方便自己以后阅读,同时也和大家一起分享。内容中会添加我自己的理解,其中如果有错误,欢迎大家指正。 相关阅读:1. 重拾数据结构2. 重拾操作系统3. 重拾计算机网络(未完成))注意:以上内容会持续更新,欢迎大家关注 GitHub &&...

weixin_34009794的博客 5359

孤读paper——《GhostNet:More Features from Cheap Operations》

《GhostNet:More Features from Cheap Operations》   发现一个点并解决就是一篇CVPR,该文章主要发现了优秀的网络的特点是feature map提取过程中的冗余性,这种冗余性体现在很多成对的feature map间很像,就好像彼此的“ghost”,而这种特征冗余性对于理解图像来说还是必要的,所以文章把feature map分为两种,一种是本质特征,一...

雄关漫道真如铁 而今迈步从头越 5150

手把手教你用Simulink搭建单相全桥逆变器(附单电流闭环控制仿真文件)

本文详细介绍了如何在Simulink中搭建单相全桥逆变器并实现单电流闭环控制。从功率主电路建模、核心器件参数设置,到控制系统的PI调节与前馈补偿,提供了完整的仿真步骤与调试技巧。文章旨在通过动手实践,帮助读者跨越理论与仿真的鸿沟,深入理解电力电子闭环控制的核心原理。

d6e7f8g9h的博客 316

Java 虚拟机系列一:一文搞懂 JVM 架构和运行时数据区

前言 之前写博客一直比较随性,主题也很随意,就是想到什么写什么,对什么感兴趣就写什么。虽然写起来无拘无束,自在随意,但也带来了一些问题,每次写完一篇后就要去纠结下一篇到底写什么,看来选择太多也不是好事儿,更重要的是不成体系的内容对读者也不够友好。所以以后的博客尽量按系列来写,不过偶尔也会穿插其他的内容。接下来一段时间我会把写博客的重点放在 JVM (Java Virtual Machine) 和 ...

IamHYN的博客 1466

Arcgis加载在线地图(内涵各种在线地图)

这三个在线地图是最常用的在线地图,其他几个类型的在线地图请自行查看。,加载出在线图层说明连接成功,点击。1、首先打开Arcgis,找到。

爱吃雪糕的小布丁的博客 1万+

02 Java虚拟机的结构

Java®虚拟机规范-Java虚拟机的结构

热爱生活~热爱工作~热爱每一天~ 807

基于NRF52833芯片的DW3000 SPI驱动接口代码实现

详细介绍基于NRF52833、nRF52820 、nRF52832 nRF52840 芯片的DW3000 硬件驱动接口代码

DT程序员的博客 1216

基于MATLAB的拉盖尔-高斯光束叠加相位模拟

首先,我们需要设置模拟所需的参数,如光腰半径、传播距离、光束的角动量等。其中,(U)表示光束的电场复振幅,(r)和(\phi)分别是极坐标系下的径向和角向坐标,(z)是传播距离,(A)是归一化系数,(w_p)是光束的光腰半径,(L_p^q)是拉盖尔多项式,(k)是波数,(l)是光束的角动量。通过修改模拟参数,如光腰半径、传播距离、角动量等,您可以进一步探索和理解拉盖尔-高斯光束的叠加相位效应。拉盖尔-高斯光束是一种特殊的光束模式,具有广泛的应用领域,包括光学信息处理、激光加工和量子光学等。

m0_47037246的博客 945

JAVA虚拟机详解

JVM虚拟机详解

snowing1997的博客 786

海洋CMS admin_notify.php 远程代码执行漏洞复现(CVE-2024-30565)

海洋CMS admin_notify.php 接口处存在远程代码执行漏洞,经过身份验证的远程攻击者可利用该漏洞执行任意代码,写入后门文件,进而控制整个web服务器。

0xSec 2713

java虚拟机原理(java虚拟机的基本结构)

虚拟机的分类 虚拟机大体上分为系统虚拟机和程序虚拟机; 如:大名鼎鼎的VMware就属于系统虚拟机,VMware是完全对物理计算机的仿真,提供一个可以运行完整操作系统的软件平台; 程序虚拟机的代表就是java虚拟机,它专门为执行单个计算机程序而设计;在java虚拟机中执行的指令我们称之为class字节码指令。 无论系统虚拟机还是程序虚拟机,在上面运行的软件都被限制于虚拟机提供的资源中; ...

weixin_35720385的博客 295

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

java 虚拟机结构_来了解Java虚拟机的基本结构

Java虚拟机的基本结构类加载子系统:负责从文件系统或者网络加载Class信息,加载的类信息存放于一块称为方法区的内存空间;方法区:除了类的信息外,可能还会存放运行时常量池信息,包括字符串,字面量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射);Java堆:它会在虚拟机启动的时候建立,它是Java程序最主要的内存工作区域。几乎所有的Java对象实例都存放于Java堆中。堆空间是所...

weixin_39687189的博客 113

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

java虚拟机(一) java虚拟机的基本结构

笔记1   java虚拟机的基本结构 1、数据类型 基本数据类型:byte、short、int、long、char、float、double 引用数据类型:类或接口、泛型类型、数组类型。 其中:byte、short、int、long是8、16、32、64位有符号整数;char是16位无符号整数(占两个字节),表示UTF-16的字符;布尔型:true、false;float、double是3...

梦游的鱼的博客 238

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

2 认识java虚拟机的基本结构

2 认识java虚拟机的基本结构类加载子系统负责从文件系统或者网络中加载Class信息,加载的类信息存放于一块称为方法区的内存空间。除了类信息外,方法区还会存放运行时常量池信息,包括字符串字面量和数值常量。java堆在虚拟机启动时建立,它是java程序中最主要的内存工作区域。几乎所有的java对象实例都存放在java堆中。堆空间是所有线程共享的。每一个java虚拟机线程都有一个私有的java栈。一个

liyidaozhang的博客 403

认识Java虚拟机的基本结构

1. Java虚拟机的架构 1)   类加载子系统负责从文件系统或者网络中加载Class信息,加载的类信息存放于一块称为方法的内存空间。除了类信息外,方法区中可能还会存放运行时常量池信息,       包括字符串字面量和数字量(这部分常量信息是Class文件中常量池部分的内存映射)。 2)   Java堆在虚拟机启动的时候建立,它是Java程序最主要的内存工作区域。几乎所有

owen_william的博客 3200

深入JVM-java虚拟机的基本结构

学习Java的同学注意了!!! 学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:456544752 我们一起学Java! 本文将介绍Java虚拟机...

chuifuhuo6864的博客 97

Java虚拟机基本结构

JVM结构 1、Java虚拟机基本结构如下:     l 类加载子系统负责从文件系统或者网络中加载Class信息,加载的类信息存放在一块称为方法区的内存空间。除了类的信息外,方法区还是会存放运行时常量池信息,包含字符串字面量和数字变量。(这部分常量信息是Class文件中常量池部分的内存映射)   l Java堆在虚拟机运行时候启动建立,它是Java程序最主要的工作内存。几乎所有的Jav

烂笔头-D的专栏 487

Java 虚拟机基本结构划分

自定义类加载器实现热部署监听类的修改时间,如果修改时间发生改变,就将其重新加载到虚拟机中tomcat为什么要打破双亲委派机制tomcat给每一个web应用创建一个WebApp ClassLoader,重写了loadClass方法,优先加载当前目录下的类为了隔绝tomcat本身与web应用,CatalinaClassLoader加载tomcat本身。

qq_27039987的博客 384
上一篇: HandlerMapping
下一篇: (4)Bean的加载
sicofield
博客等级 码龄18年 169粉丝 169原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值