【Java EE】JVM

news/2024/9/15 17:24:20/ 标签: java-ee, jvm, java

目录

1. JVM简介

2.JVM运行流程

3.JVM运行时数据区

3.1 堆(线程共享)

3.2 Java虚拟机栈(线程私有)


1. JVM简介

JVM是 Java Virtual Machine 的简称,意为Java虚拟机。

虚拟机是指通过软件模拟的具有完整硬件功能的、运行在一个完全隔了的环境中的完整计算机系统。

常见的虚拟机:JVM、VMware、Virtual Box。

JVM和其他两个虚拟机的区别:

  1. VMware和Virtual Box是通过软件模拟物理CPU的指令集,物理系统中会有很多的寄存器。
  2. JVM则是通过软件来模拟java字节码的指令集,JVM只是保留了PC寄存器,其他的寄存器都进行了剪裁。

JVM是一台被定制过的现实中不存在的计算机。

2.JVM运行流程

JVM执行流程

程序在执行之前要先把java字节码转换成字节码(class文件),JVM首先需要把字节码通过一定的方式类加载器把文件加载到内存中运行时数据区,而字节码文件是JVM的一套指令集规范,并不能直接交个底层操作系统去执行,因此需要特定的指令解析器执行“引擎”将字节码翻译成底层系统指令在交由CPU执行,而这个过程中需要调用其他语言的接口 本地库接口来实现整个程序的功能,这就是4个主要部分的职责和功能。

总结来看,JVM主要通过分为以下四个部分,来执行java程序的,他们分别是:

  1. 类加载器
  2. 运行时数据区
  3. 执行引擎
  4. 本地库接口

3.JVM运行时数据区

JVM运行时数据区域也叫内存布局,但是需要注意的是它和java内存模型完全不同,是完全不同的两个概念,它由以下5大部分组成:

3.1 堆(线程共享)

堆的作用:程序中创建的所有对象都保存再堆中。

我们常见的JVM参数设置-Xms10m最小启动内存是针对堆的。-Xmx10m最大运行内存也是针对堆

堆里面分为两个区域:新生代和老生代,新生代方新建的对象,当经过一定GC次数之后还存在的对象会放入老生代。新生代还有三个区域:一个Endn+两个Survior(S0/S1)。

垃圾回收的时候会将Endn中存活的对象放到一个未使用的Suvivor中,并把当前的Endn和正在使用的Survivor清除掉。

3.2 Java虚拟机栈(线程私有)

Java虚拟机栈的作用:Java虚拟机栈的生命周期和线程相同,Java虚拟机栈描述的是Java方法执行的内存模型:每个方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息。我们常说的堆内存、栈内存指的就是虚拟机栈。

Java虚拟机栈中包含了以下四个部分:


http://www.ppmy.cn/news/1519917.html

相关文章

python-简单的dos攻击

前言 这个是DOS攻击学习(注意:千万别去攻击有商业价值的服务器或应用,不然会死的很惨(只有一个IP通过公网访问容易被抓),前提是网站没有攻击防御) 创建一个以python编写的后端web服务(好观察) 安装flask pip install flask from flask import Flaskapp …

Android使用前台服务

Android使用前台服务 服务几乎都是在后台运行的,一直以来它都是默默地做着辛苦的工作。但是服务的系统优先级还是比较低的,当系统出现内存不足的情况时,就有可能会回收掉正在后台运行的服务。 如果你希望服务可以一直保持运行状态&#xff…

使用golang的AST编写定制化lint

什么是lint (来自wiki)在计算机科学中,lint是一种工具程序的名称,它用来标记源代码中,某些可疑的、不具结构性(可能造成bug)的段落。它是一种静态程序分析工具,最早适用于C语言&…

【13年12月CCF计算机软件能力认证】:出现次数最多的数、ISBN号码、最大的矩形、有趣的数、I‘m stuck!

题目概括出现次数最多的数暴力枚举,非常简单ISBN号码直接模拟,非常简单最大的矩形用到双指针(优化枚举),非常简单有趣的数用到了数学知识排列组合,有一定思维难度I’m stuck!我用到了两个dfs来解决&#xf…

【区块链 + 供应链】广汽本田区块链合同供应链管理系统 | FISCO BCOS应用案例

广汽本田是国内汽车制造的龙头,每年销售额超千亿级别,每年的合同采购规模量在百亿以上。企业内部采用传 统的中心化方式管理合同,由于涉及部门众多,需要管理的合同要素也各不相同,造成信息不集中、合同版本众多、 合同…

C#中lock(this)与lock(private object)区别

前言 在使用多线程编程时,我们会对代码关键部分确保其一次只由一个线程执行,对于防止争用条件和保持数据完整性至关重要。在C#中,lock 语句就是用于通过同步对共享资源的访问来实现此目的工具。本文介绍lock(this) 与lock(private object) 两…

重新修改 Qt 项目的 Kit 配置

要重新修改 Qt 项目的 Kit 配置,你可以按照以下步骤进行操作: 1. 打开 Qt Creator 首先,启动 Qt Creator,确保你的项目已经打开。 2. 进入项目设置 在 Qt Creator 中,点击菜单栏的 “Projects” 标签(通…

Spark MLlib模型训练—回归算法 Decision tree regression

Spark MLlib模型训练—回归算法 Decision tree regression 在机器学习中,决策树是一种常用且直观的模型,广泛应用于分类和回归任务。决策树回归 (Decision Tree Regression) 通过将数据集分割成多个区域,构建一棵树形结构,以预测目标变量的连续值。本文将详细探讨 Spark 中…

【Eureka】搭建Eureka Server,实现服务注册和服务发现

1. Eureka介绍 Eureka是NetflixOSS套件中关于服务注册和发现的解决⽅案.SpringCloud对Eureka进⾏了集成,并作为优先推荐⽅案进⾏宣传,虽然⽬前Eureka2.0已经停⽌维护,新的微服务架构设计中,也不再建议使用,但是⽬前依然有⼤量公司的微服务系统使⽤Eureka作为注册中⼼. 官方文…

数据访问:JPA

文章目录 JPA的由来JPA是什么Spring Data JPA快速上手 JPA的由来 ORM框架能够将Java对象映射到关系型数据库中,能够直接持久化复杂的 Java对象。ORM框架的出现,可以让开发者从数据库编程中解脱出来,把更多的精力放在业务模型与业务逻辑上。目…

k8s-pod 实战八 (gRPC 探测详细分析)

gRPC 探测详细分析 在 Kubernetes 中,探针(Probe)用于检查应用程序的健康状态和就绪状态。尽管 Kubernetes 原生支持 HTTP 和 TCP 探针,但对于 gRPC 服务,你需要借助第三方工具来实现探测。grpc-health-probe 是一个常用的工具,它专门用于探测 gRPC 服务的健康状态。 实…

KeePassXC软件简介

KeePassXC 是一款开源且免费的跨平台密码管理器,它允许用户在不同的网站和服务上使用多个不同的密码,而无需记住它们。用户只需要记住一个主密码或者持有一个密钥文件,就可以访问所有密码的加密数据库。KeePassXC 支持 AES 加密算法&#xff…

《C++20 特性综述》

《C20 特性综述》 在编程世界中,C一直以其强大的性能和灵活性占据着重要地位。随着时间的推移,C不断发展和演进,C20 带来了一系列令人瞩目的新特性,为开发者提供了更强大的工具和更高效的编程方式。 一、概念(Concep…

大模型技术 | 基于 Langchain 和 Streamlit,构建多 PDF RAG 聊天机器人

与 PDF 互动是很酷的。你可以与你的笔记、书籍和文档等进行聊天。 本文将帮助你构建一个基于 Multi RAG Streamlit 的 Web 应用程序,通过对话 AI 聊天机器人来读取、处理和互动PDF数据。 以下是该应用程序的工作步骤,用简单的语言进行说明。 配置必要的…

JDK原理

当我们谈论JDK(Java Development Kit)的原理时,实际上是在探讨Java语言及其开发环境背后的技术和设计思想。JDK是Java编程语言的核心工具包,它包含了Java运行环境(JRE)、Java编译器(javac&#…

2 html5 浏览器已经支持的新API

HTML5规范下很多API浏览器都已经支持,这里我们列举几个很常用的浏览器支持的API: 1 tab页之间通信: BroadcastChannel(channelName); 可用于多个不同浏览器tab页之间通信。实例化的时候Channel名称必须相同。 const broadcastChannel new BroadcastChannel(myC…

39次8.29(了解docker-compose,docker-compose编排容器,配置harbor服务)

1.使用使用docker-compose编排容器 1.YAML ⽂件的格式和语法 1)YAML ⽂件格式 yaml 是⼀种标记语⾔很直观的数据序列化格式,可读性很⾼。 类似于 xml 描述性语⾔,语法⽐xml简单的很多。 yaml 数据结构通过缩进进⾏表示,连续的…

金九银十来了,你准备好了吗?——迎接技术行业的旺季

每年的九月和十月,对于技术行业来说,是一个特别的时期。这个时期被业界称为“金九银十”,意味着招聘和项目开发的高峰期。对于技术人员而言,这不仅是一个职业发展的黄金时期,也是技术能力提升和职业规划的关键时刻。那…

RAG中pdf解析的方法全览

RAG中解析PDF的方法 一 pdf格式都有哪些 1.机器生成的pdf文件,包含图像,文本,可以被编辑 2.传统扫描文档,表现为图像,不能被编辑 3.带OCR的扫描文档。可能转OCR的过程中带入了错误。 二 pdf解析全科指南 全面指南…

设计模式 8 组合模式

设计模式 8 创建型模式(5):工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式结构型模式(7):适配器模式、桥接模式、组合模式、装饰者模式、外观模式、享元模式、代理模式行为型模式&#xff0…