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

日拱一卒 | JVM

文章目录

  • 什么是JVM?
  • JVM的组成
  • JVM的大致工作流程
  • JVM的内存模型

什么是JVM?

我们知道Java面试,只要你的简历上写了了解JVM,那么你就必然会被问到以下问题:

  • 什么是JVM?
  • 简单说一下JVM的内存模型?
  • 类的加载的过程是怎样的?
  • 什么叫内存溢出、堆栈溢出、逃逸分析?

大家可能大概知道JVM是个什么东西,但很难把他完全说清楚
这些零散的问题,如果没有一个结构来容纳,将会很难记忆,也很难联系起来

我们今天就系统的聊一下JVM,以及经常问到的关于JVM的面试题

JVM的组成

先看这张图
在这里插入图片描述
JVM共由四个模块组成,其中包含为两个子系统和两个组件,分别为:

  • class loader 类加载系统
  • execution engine 执行引擎子系统
  • runtime data area 运行时数据区组件
  • native interface 本地借口组件

面试中 最经常问到的就是 1、3两个,类加载器、内存模型。
相信大家都有体会~

那我们先来讲讲JVM工作的完整流程,再来详细讲讲这两个面试中最经常问到的两个组件。

JVM的大致工作流程

首先通过编译器把Java源代码转换成字节码,class loader类装载器再把字节码加载到内存中,将其放在运行时运行数据区的方法区内,而字节码文件仅是JVM的一套指令集规范,并不能直接交给底层操作系统去执行,因此需要特定的命令解析,执行引擎execution engine,将字节码翻译成底层的系统指令,再交给CPU去执行,而这个过程中需要调用其他语言的本地库接口,native interface来实现整个程序的功能。

好了,有了这个大概的认识,我们大概能了解每个部分分别的功能和作用。

下面我们来聊聊面试工程中经常问到的关于JVM的问题。

在这里插入图片描述

我们从最常问到的问题开始

JVM的内存模型

首先是内存模型内存模型,一共有五个单元,分别是程序计数器方法区对站和本地方法站这个如果直接来寄可能比较难寄,我们通过实际实验过程中内存创建的规律来记忆会更方便一些,首先一个县城创建,他会带出三个东西,分别叫做程序技术器和加虚拟之战以及本地方法站这三个单元

那另外两个单元方法区和堆就是县城共享的区域

我们分别说一下每一个区域它的功能新程序技术器,它是县城私有的一个县城创建之后,他就会有一个程序技术器,他存在的意义是当我们操作系统中现成数超过CPU的合数的时候,那我们执行如果就存在现场等待的情况,为了记住我们这个县城当前已经执行到哪个步骤了,所以就存在一个东西,要做程序技术器记录县城正在指执行的这个将要执行下一步骤的这个指令的地址

我们分别说一下每一个区域它的功能新程序技术器,它是县城私有的一个县城创建之后,他就会有一个程序技术器,他存在的意义是当我们操作系统中现成数超过CPU的合数的时候,那我们执行如果就存在现场等待的情况,为了记住我们这个县城当前已经执行到哪个步骤了,所以就存在一个东西,要做程序技术器记录县城正在指执行的这个将要执行下一步骤的这个指令的地址第二个东西叫做嘉华逊基站嘉兴站是每个县城都会有一个叫训练机站他从每这个站里会存在若干个战争,每个战争保存一个方法的入餐出餐静态变量,还有这个返回值等地址等等,再就是本地方发展本地方法,但他的作用和教训激战作用是类似的,只不过他提供的他是为这个本地方法native Mike提供这个战争战争的记录
第二个东西叫做嘉华逊基站嘉兴站是每个县城都会有一个叫训练机站他从每这个站里会存在若干个战争,每个战争保存一个方法的入餐出餐静态变量,还有这个返回值等地址等等,再有就是本地方发展本地方法,但他的作用和教训激战作用是类似的,只不过他提供的他是为这个本地方法native Mac提供这个战争战争的记录

OK,下面是性能调优的部分,我们这V M一共有哪些参数以及我们做G的性能分析工具有哪些工具这部分我们先跳过不讲

OK,下面是性能调优的部分,我们这V M一共有哪些参数?以及我们做G的性能分析工具有哪些工具这部分我们先跳过,不讲在下面就是执行模式,一个Clas文件在被执行时会经过哪些过程它的完整的生命周期是哪些?

然后就是类加载的过程,首先我们有一个基础知识叫做双庆委派机制双庆委派机制是什么就是当我们一个例假的气需要加载一个Clas的时候,他会先去找他的负累,询问他的负累,让他的副理信息加载这个类,如果他的父类加载不了,然后他再让他的负累的负累再来尝试加载如果,所有的父类加载不了才会上之类赖加载

所有的父类加载不了,再才会上之内赖加载常见的内下载器,一共有四种第一种是B strap类下载器,他是加载我们家最底层代码这个类,然后是ex深深立下的气,再是什么家的气,最后是自定义的那家的气

关于兵器优化一共有哪些内容?首先公共指表达式的消除以指令重拍内敛,还有我们比较常问道的陶艺分析理论,他分析的方法是什么?现场是怎么做到一分析的,还有我们线上是如何分配空间以及同步消除的。

关于兵器优化一共有哪些内容?首先公共指表达式的消除以指令重排内敛,还有我们比较常问道的陶艺分析理论,他分析的方法是什么?现场是怎么做到一分析的还有我们现站上是如何分配空间以及同步消除的一些问题,最后呢,就是我们的GCGC是一个更长见的问题,JC首先分为了两个问题,一个是分类回收,还有一是回收器的实现风带回收,我们可以分为这个新生代老年代,然后当然在最新的这个哪里会出去几万中出现了这个叫持久代这个概念

,最后呢,就是我们的GCGC是一个更长见的问题,JC首先分为了两个问题,一个是分类回收,还有一是回收器的实现风带回收,我们可以分为这个新生代老年代,然后当然在最新的这个那里会出去几万中出现了这个叫持久代这个概念回收期的实现有哪些?我们有创新的回收期,并且回收期C MSG o还有Z GC等等这些回收器。

相关文章:

日拱一卒 | JVM

文章目录 什么是JVM?JVM的组成JVM的大致工作流程JVM的内存模型 什么是JVM? 我们知道Java面试,只要你的简历上写了了解JVM,那么你就必然会被问到以下问题: 什么是JVM?简单说一下JVM的内存模型?…...

乐尚代驾六订单执行一

加载当前订单 需求 无论是司机端,还是乘客端,遇到页面切换,重新登录小程序等,只要回到首页面,查看当前是否有正在执行订单,如果有跳转到当前订单执行页面 之前这个接口已经开发,为了测试&…...

SciPy 与 MATLAB 数组

SciPy 与 MATLAB 数组 SciPy 是一个开源的 Python 库,广泛用于科学和工程计算。它构建在 NumPy 数组的基础之上,提供了许多高级科学计算功能。MATLAB 是一个高性能的数值计算环境,它也使用数组作为其基础数据结构。在这篇文章中,我们将探讨 SciPy 和 MATLAB 在数组操作上的…...

基于vue-grid-layout插件(vue版本)实现增删改查/拖拽自动排序等功能(已验证、可正常运行)

前端时间有个需求,需要对33(不一定,也可能多行)的卡片布局,进行拖拽,拖拽过程中自动排序,以下代码是基于vue2,可直接运行,报错可评论滴我 部分代码优化来自于GPT4o和Clau…...

DBoW3相关优化脉络

1 DBow3 GitHub - rmsalinas/DBow3: Improved version of DBow2 2 优化后得到fbow GitHub - rmsalinas/fbow: FBOW (Fast Bag of Words) is an extremmely optimized version of the DBow2/DBow3 libraries. 其中fbow是ucoslam的一部分; ucoslam GitHub - la…...

qt 如何制作动态库插件

首先 首先第一点要确定我们的接口是固定的,也就是要确定 #ifndef RTSPPLUGIN_H #define RTSPPLUGIN_H #include "rtspplugin_global.h" typedef void (*func_callback)(uint8_t* data,int len,uint32_t ssrc,uint32_t ts,const char* ipfrom,uint16_t f…...

一种docker start放回Error response from daemon: task xxx错误的解决方式

1. 问题描述 执行systemctl daemon-reload与systemctl restart docker命令后,发现docker中有的应用无法启动,并显示出Exit(255)的错误提示。 重新执行docker start 容器id后发现返回,Error response from daemon: task xxx的错误。 2. 问题…...

规控面试常见问题

一、项目中遇到的困难或者挑战是什么? 二、A*算法原理(伪代码) 输入:代价地图、start 、 goal(Node结构,包含x、y、g、h、id、pid信息) 首先初始化:创建一个优先级队列openlist,它是一个最小堆,根据节点的f值排序 ( priority_queue<Node, std::vector<Node…...

代码随想录算法训练营Day 63| 图论 part03 | 417.太平洋大西洋水流问题、827.最大人工岛、127. 单词接龙

代码随想录算法训练营Day 63| 图论 part03 | 417.太平洋大西洋水流问题、827.最大人工岛、127. 单词接龙 文章目录 代码随想录算法训练营Day 63| 图论 part03 | 417.太平洋大西洋水流问题、827.最大人工岛、127. 单词接龙17.太平洋大西洋水流问题一、DFS二、BFS三、本题总结 82…...

【全网最全】CSDN博客的文字颜色、字体和字号设置

文章目录 一、字体颜色二、字体大小三、字体类型四、字体背景色 在这篇博客中&#xff0c;我们将深入探讨如何在Markdown编辑器中设置文字颜色、大小、字体与背景色。Markdown本身并不直接支持这些功能&#xff0c;但通过结合HTML标签和CSS样式&#xff0c;我们可以实现这些视觉…...

C#实现数据采集系统-Mqtt实现采集数据转发

在数据采集系统中,通过ModbusTcp采集到数据之后,再通过MQTT转发到其他应用 MQTT操作 安装MQTT mqtt介绍和环境安装 使用MQTT 在C#/Net中使用Mqtt MQTT类封装 MQTT配置类 public class MqttConfig{public string Ip {get; set;...

common-intellisense:助力TinyVue 组件书写体验更丝滑

本文由体验技术团队Kagol原创~ 前两天&#xff0c;common-intellisense 开源项目的作者 Simon-He95 在 VueConf 2024 群里发了一个重磅消息&#xff1a; common-intellisense 支持 TinyVue 组件库啦&#xff01; common-intellisense 插件能够提供超级强大的智能提示功能&…...

图片在线压缩有效方法详解,分享7款最佳图片压缩工具免费(全新)

当您的系统中图片数量不断增加&#xff0c;却无法删除时&#xff0c;那么就需要通过图片压缩来解决您的问题。随着图片文件的增大&#xff0c;高分辨率图片占据了大量存储空间。而此时系统中的存储空间也开始变得不够用&#xff0c;无法跟上高质量图片的增长。因此&#xff0c;…...

electron安装及快速创建

electron安装及快速创建 electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 详细内容见官网&#xff1a;https://www.electronjs.org/zh/docs/latest/。 今天来记录下练习中的安装过程和hello world的创建。 创建项目文件夹&#xff0c;并执行npm 初始化命…...

需要消化的知识点

需要消化 消灭清单 如何自定义一个Interceptor拦截器&#xff1f; 后端开发可以用上的前端技巧 10个堪称神器的 Java 学习网站. 【前端胖头鱼】11 chrome高级调试技巧&#xff0c;学会效率直接提升666% 【前端胖头鱼】10个我经常逛的“小网站” 【前端劝退师lv-6】Chrome D…...

2024年7月25日(Git gitlab以及分支管理 )

分布式版本控制系统 一、Git概述 Git 是一种分布式版本控制系统,用于跟踪和管理代码的变更。它是由Linus Torvalds创建的,最 初被设计用于Linux内核的开发。Git允许开发人员跟踪和管理代码的版本,并且可以在不同的开 发人员之间进行协作。 Github 用的就是Git系统来管理它们的…...

pdf格式过大怎么样变小 pdf文件过大如何缩小上传 超实用的简单方法

面对体积庞大的 PDF 文件&#xff0c;我们常常需要寻找有效的方法来缩减其大小。这不仅能够优化存储空间&#xff0c;还能提升文件的传输和打开速度。PDF文件以其稳定性和跨平台兼容性成为工作和学习中的重要文件格式。然而&#xff0c;当我们需要通过邮件发送或上传大文件时&a…...

前端文件下载word乱码问题

记录一次word下载乱码问题&#xff1a; 用的请求是axios库&#xff0c;然后用Blob去接收二进制文件 思路&#xff1a;现在的解决办法有以下几种&#xff0c;看看是对应哪种&#xff0c;可以尝试解决 1.将响应类型设为blob&#xff0c;这也是最重要的&#xff0c;如果没有解决…...

repo中的default.xml文件project name为什么一样?

文章目录 default.xml文件介绍为什么 name 是一样的&#xff0c;path 不一样&#xff1f;总结 default.xml文件介绍 在 repo 工具的 default.xml 文件中&#xff0c;定义了多个 project 元素&#xff0c;每个元素都代表一个 Git 仓库。 XML 定义了多个不同的 project 元素&…...

<section id=“nice“ data-tool=“mdnice编辑器“ data-webs

大模型日报 2024-07-24 大模型资讯 Meta发布最大Llama 3 AI模型&#xff0c;语言和数学能力提升 摘要: Meta公司发布了其迄今为止最大的Llama 3人工智能模型。该模型主要免费提供&#xff0c;具备多语言处理能力&#xff0c;并在语言和数学方面表现出显著提升。 Meta发布最强AI…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 &#xff08;一&#xff09;实时滤波与参数调整 基础滤波操作 60Hz 工频滤波&#xff1a;勾选界面右侧 “60Hz” 复选框&#xff0c;可有效抑制电网干扰&#xff08;适用于北美地区&#xff0c;欧洲用户可调整为 50Hz&#xff09;。 平滑处理&…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由&#xff1a;大部分的转换软件需要收费&#xff0c;要么功能不齐全&#xff0c;而开会员又用不了几次浪费钱&#xff0c;借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...