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

java虚拟机

一、JVM基础概念与跨平台原理

 

- 跨平台实现:Java通过JVM解决跨平台问题,官方提供适用于不同操作系统(如windows x86、windows arm等)的JVM版本。对上层Java程序代码写法统一要求,程序员只需编写一套代码就能兼容多种环境 ,JVM如同翻译官,虽降低运行效率但提高开发效率。

- 语言生态与借鉴:Java之后很多语言引入虚拟机或运行时(如Python、JS等)。Kotlin、Scala、Groove等语言可编译成与JVM兼容字节码,借助Java生态。

 

二、JVM相关组件与传统虚拟机对比

 

- JDK、JRE与JVM关系:JDK是Java开发工具包,用于编写和编译Java代码;JRE是Java运行时环境,用于运行Java程序;JVM是JRE的核心模块 。

- 与传统虚拟机区别:传统虚拟机(如VMware等)模拟完整电脑硬件可安装独立操作系统,JVM只运行Java代码,并非模拟电脑所有核心硬件。

 

三、JVM内存区域划分

 

- 程序计数器:保存当前Java程序要运行的下一个字节码指令位置,每个线程都有一个,因线程是CPU调度基本单位 。

- 元数据区(方法区):存放类对应的指令,保存类的基本信息(类名、父类、接口、属性、方法等),Java代码无法干预其内容,由代码中类的数量等确定 。

- 栈:保存方法调用关系,每个栈帧对应一次方法调用,记录方法参数、局部变量、返回值结果和跳转地址等信息,线程私有 。

- 堆:存放new出来的对象,对象内存空间在此,还包含对象相关重要信息(如加锁信息) ,堆空间通常最大。

 

四、类加载机制

 

- 类加载过程

- 加载:将.class文件读入内存,解析二进制数据。

- 验证:校验.class文件内容合法性。

- 准备:为类对象分配未初始化内存空间,静态成员初始化为默认值(如0 )。

- 解析:初始化代码中的常量并加载到内存。

- 初始化:执行用户代码,对类静态成员真正初始化,执行静态代码块,加载父类和接口 。

- 双亲委派模型:类加载过程中找类的方式,是面试重点 。

 

 

http://www.xdnf.cn/news/655921.html

相关文章:

  • 第11章 标准化和软件知识产权基础知识,多媒体、图像相关
  • 认识微服务
  • 区块链与Web3:如何有效保障个人数据安全
  • 扩容的未来:Web3 并行计算赛道全景图谱
  • moviepy视频添加中文水印
  • 网络原理 | TCP与UDP协议的区别以及回显服务器的实现
  • 热门大型语言模型(LLM)应用开发框架
  • yolov8分割任务的推理和后处理解析
  • HMI仿真报错
  • 【MATLAB例程】声纳信号处理与目标测距的程序|信号频率、信噪比、采样率和声速均可自行调整|附代码下载链接
  • 【Bug】--node命令加载失败
  • 安卓端智能耗材柜系统可行性方案(基于uniapp + Vue3)
  • 数据的六个特性以及由于独特性产生的一些有趣的想法
  • 【C/C++】基于 Docker 容器运行的 Kafka + C++ 练手项目
  • Vue条件渲染
  • JavaScripts console.log和console.dir区别
  • Linux基本指令篇 —— clear指令
  • Vue 前端全方位性能优化指南
  • 【Hive基础】01.数据模型、存储格式、排序方式
  • FFmpeg 时间戳回绕处理:保障流媒体时间连续性的核心机制
  • 双11、618大促要做什么?
  • vs2022 调试时 控制台界面不出来
  • 基于离散元仿真软件DEMms的双锥水力旋流器-颗粒分离性能分析
  • 白平衡校正中冯・克里兹参数计算过程详解
  • 通过Jflash合并Boot和App两个hex为一个hex的办法
  • C++11——智能指针
  • Django压缩包形式下载文件
  • Halcon 图像预处理②
  • (11)Service Mesh架构下Java应用实现零信任安全模型
  • 运维_麒麟_国产系统桌面版安装